大佬教程收集整理的这篇文章主要介绍了iPad上的Safari偶尔也无法识别ASP.NET回发链接,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
注销控件在aspx文件中如下所示:
<asp:LinkButton ID="logoutButton" onclick="logoutButton_Click" runat="server">[ logout ]</asp:LinkButton>
<a id="logoutButton" href="javascript:__dopostBACk('ctl00$logoutButton','')">[ logout ]</a>
在iPad上运行的Safari是否有任何特殊之处可能会阻止此类链接偶尔中断,例如页面上或其他打开的浏览器选项卡中加载了太多数据,或者ViewState是否在这种情况下起作用?即使在iPad上使用Web应用程序一段时间后,我找不到任何特定的方法来重新创建问题,所以我甚至无法开始尝试修复它,这真的令人沮丧,所以我正在寻找那些开发了ASP.NET应用程序并且非常了解iPad和/或Safari环境的人的指导.我从来没有在桌面浏览器上出现过这个问题.
更新:使用this page上概述的关于如何在iPad上向Safari添加伪视图源选项的技巧,我现在能够看到回发链接正在工作的页面生成的HTML与页面的不同之处在哪里它停止了.简而言之,ASP.NET通常在页面中嵌入的__dopostBACk JavaScript函数……由于某种原因停止嵌入.因此,绑定到链接的JavaScript只会出错.以下是ASP.NET通常添加到页面以使回发链接工作的内容:
<script type="text/javascript"> //<![CDATA[ var theForm = document.forms['form1']; if (!theForm) { theForm = document.form1; } function __dopostBACk(eventTarget,eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != falsE)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script>
这似乎与Apple support forum和here on SO中描述的问题相同.后者表明ASP.NET有时可能无法将iPad上的Safari识别为具有JavaScript功能,因此无法在页面中正确插入__dopostBACk功能.我的页面上的其他JavaScript仍然可以正常工作,所以它不能完全解释我的问题.
<browserCaps userAgentCacheKeyLength="256" />
…进入< system.web>我的web.config文件的一部分,还有:
protected void Page_PreInit(object sender,EventArgs E) { if (request.UserAgent != null && request.UserAgent.IndexOf("AppleWebKit",StringComparison.CurrentCultureIgnoreCasE) > -1) { this.CLIENtTarget = "uplevel"; } }
在正在执行的主网页的代码隐藏文件中. Jason Kealey,该另一个人的修复源,也在他的调查结果的评论部分中建议,将它添加到ASP.NET Web应用程序的App_Browsers文件夹中的.browser文件中也可能会有所帮助:
<browsers> <browser refID="Mozilla" > <capabilities> <capability name="cookies" value="true" /> <capability name="type" value="Uplevel" /> </capabilities> </browser> <browser refID="Default"> <capabilities> <capability name="cookies" value="true" /> <capability name="type" value="Uplevel" /> </capabilities> </browser> </browsers>
编辑:@H_696_44@我将此修复程序应用于我的应用程序,但它打破了其他区域,特别是,它将Chrome和Safari识别为“高级”,这导致它在其他区域被检测为“IE”.下面的代码使得此修复仅适用于未在用户代理中标识为Safari的iDevices:
String ua = request.UserAgent; if (ua != null && (ua.IndexOf("iPhone",StringComparison.CurrentCultureIgnoreCasE) >= 0 || ua.IndexOf("iPad",StringComparison.CurrentCultureIgnoreCasE) >= 0 || ua.IndexOf("iPod",StringComparison.CurrentCultureIgnoreCasE) >= 0) && ua.IndexOf("Safari",StringComparison.CurrentCultureIgnoreCasE) < 0) { this.CLIENtTarget = "uplevel"; }
以上是大佬教程为你收集整理的iPad上的Safari偶尔也无法识别ASP.NET回发链接全部内容,希望文章能够帮你解决iPad上的Safari偶尔也无法识别ASP.NET回发链接所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。