首先是背景信息。带有AJAX Extensions 1.0的ASP.NET 2.0 Web站点。
我有一个奇怪的问题,只发生在Safari中,我也只能假设Chrome,因为他们都使用WebKit。我也在网站上使用jQuery,但是目前对jQuery的引用只加载在一个页面上,所以我认为这不是问题。
我提交了一个友好的“处理请求...”消息,当您提交页面异步或非异步回发时会显示该消息并在回发后隐藏。在异步回发的情况下,我使用PageRequestManager
的{{1}}方法来隐藏“处理请求...”消息。这在FireFox,IE 6/7/8和Opera中运行良好但由于某些原因在Safari(Windows和Mac版本)上,add_endRequest(...)
并不总是激发。我只是关于跨浏览器,所以只是想知道是否有人对如何解决这个问题有任何想法。
这对我来说是一个显示限制因素,因为不仅会出现“处理请求...”消息,而且我还在整个页面的顶部放置一个透明div,以防止在提交后出现多次点击,因此页面变得无法使用除非你知道如何破解CSS以隐藏透明div。
以下是我的母版页标记的代码片段,用于处理我的“处理请求...”消息:
add_endRequest(...)
如果您想知道aspNetAjaxFix.js是什么,请参阅我在StackOverFlow上发布的这个问题,Internet Explorer's Operation Aborted and Latency Issue
我也用Google搜索了这个没有太多运气的东西。这篇文章似乎是相关的,http://forums.asp.net/t/1247957.aspx但只是提出同样的问题,没有解决方案。
非常感谢对这个问题的任何见解。
答案 0 :(得分:4)
经过一番挖掘后,我发现了这个问题。它与PageRequestManager
的{{1}}方法无关,而且与基于Safari和WebKit的浏览器的ASP.NET AJAX客户端API中的浏览器检测无关。
感谢ASP.NET论坛taliesins上的http://forums.asp.net/t/1252014.aspx帖子,{{3}}。我发现这篇文章的第一次看到我收到了这个错误:
add_endRequest(...)
即使我在JavaScript中调用了Sys.ScriptLoadFailedException: The script 'http://localhost:2241/WebResource.axd?d=hvpXhV5kEMwLgAoaIglURevR_XTtDTBoKZ3aZWWaIvEkBXbLudri1AIv5bRs5f6licjCZMs3Z3MioQLqLTXV98582pKDHkD7BucGkKsPLz41&t=633444640020014740' failed to load. Check for:
Inaccessible path.
Script errors. (IE) Enable 'Display a notification about every script error' under advanced settings.
Missing call to Sys.Application.notifyScriptLoaded().
。
显示塞子已解决。
答案 1 :(得分:0)
1-create WebKit.js
Sys.Browser.WebKit = {}; //Safari 3 is considered WebKit
if (navigator.userAgent.indexOf('WebKit/') > -1) {
Sys.Browser.agent = Sys.Browser.WebKit;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/WebKit\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.name = 'WebKit';
}
2-change ScriptManager
<asp:ScriptManager ID="ScriptManager1" runat="server" AsyncPostBackTimeout="600">
<Scripts>
<asp:ScriptReference Path="~/JScripts/webkit.js" />
</Scripts>
</asp:ScriptManager>