天天看点

解决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 ;