天天看點

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

1、為ScriptManager添加腳本引用,不從ScriptResource.axd中加載MicrosoftAjax.js腳本,而是直接加載

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

     < asp:ScriptManager  ID ="ScriptManager1"  runat ="server"  EnablePageMethods ="true" >

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

         < Scripts >

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

            <asp:ScriptReference Name="MicrosoftAjax.js" ScriptMode="auto" Path="~/ScriptLibrary/System.Web.Extensions/1.0.61025.0/MicrosoftAjax.js" />

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

         </ Scripts >

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

     </ asp:ScriptManager >

2、修改MicrosoftAjax.debug.js

删除

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

switch (Sys.Browser.agent) 

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

{

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    case Sys.Browser.InternetExplorer:與

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

case  Sys.Browser.Safari: 之間的腳本,替換為如下腳本:

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

Sys.UI.DomElement.getLocation  =   function (element) 

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

{

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    if (element.self || element.nodeType === 9) return new Sys.UI.Point(0,0);

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    var clientRect = element.getBoundingClientRect();

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    if (!clientRect) 

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

{

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

        return new Sys.UI.Point(0,0);

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    }

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    var ownerDocument = element.document.documentElement;

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    var offsetX = clientRect.left - 2 + ownerDocument.scrollLeft,

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

        offsetY = clientRect.top - 2 + ownerDocument.scrollTop;

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    try 

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

{

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

        var f = element.ownerDocument.parentWindow.frameElement || null;

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

        if (f) 

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

{

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

            var offset = 2 - (f.frameBorder || 1) * 2;

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

            offsetX += offset;

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

            offsetY += offset;

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

        }

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    }

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    catch(ex) 

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

{

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    }    

解決ASP.NET AJAX在frame及iframe中跨域通路的問題
解決ASP.NET AJAX在frame及iframe中跨域通路的問題

    return new Sys.UI.Point(offsetX, offsetY);

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

}

解決ASP.NET AJAX在frame及iframe中跨域通路的問題

break ;  

繼續閱讀