ASP.NET AJAX 內嵌於iframe 出現scriptresource.axd 錯誤

當在本機端執行網頁時狀況一切正常,但放上server端因有外部框架內嵌自己的網頁時,卻無法使用AJAX元件…

1) 首先我們來到ASP.NET AJAX的安裝路徑抓取MicrosoftAjax.debug.js 及MicrosoftAjax.js 這兩個檔案​

路徑:C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET 2.0 AJAX Extensions\v1.0.61025\MicrosoftAjaxLibrary\System.Web.Extensions\1.0.61025.0

2) 接著在自己的專案裡建立AJAX_JS 名稱資料夾並放入

3) 再來修改這兩個檔案中將case Sys.Browser.InternetExplorer:跟case Sys.Browser.Safari:之間的程式碼換成以下內容並存檔:

Sys.UI.DomElement.getLocation = function(element) { 
     if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0); 
     var clientRect = element.getBoundingClientRect(); 
     if (!clientRect) { 
         return new Sys.UI.Point(0,0); 
     } 
         var ownerDocument = element.document.documentElement; 
        var offsetX = clientRect.left - 2 + ownerDocument.scrollLeft, 
         offsetY = clientRect.top - 2 + ownerDocument.scrollTop; 
      
     try { 
        var f = element.ownerDocument.parentWindow.frameElement || null; 
         if (f) { 
             var offset = 2 - (f.frameBorder || 1) * 2; 
             offsetX += offset; 
             offsetY += offset; 
         } 
     } 
     catch(ex) { 
     }     
     return new Sys.UI.Point(offsetX, offsetY); 
 } 
 break;

4) 然後在你的主版或是需要使用ajax的頁面加上

<asp:ScriptManager ID="ScriptManagerMain" runat="server" >
         <Scripts>
            <asp:ScriptReference
                Name="MicrosoftAjax.js" ScriptMode="Auto"
                Path="~/AJAX_JS/MicrosoftAjax.js" />
        </Scripts>
</asp:ScriptManager>

5) 把加入的檔案上傳後再重新執行即可正常使用AJAX元件

 

參考網站

https://dotblogs.com.tw/jimmyyu/archive/2009/04/21/8116.aspx