使用Fiddler作为iPad的代理服务器,我在重新打开页面时发现了以下问题.
>我的* .skin文件未正确应用.生成的样式标记不包含* .skin文件中指定的某些参数.
>该页面不包含MicrosoftAjaxWebForms.js文件. (工作时,它会在所有ToolkitScriptManager脚本的正上方发出对ScriptResource.axd的引用.
>该页面不包含对以函数WebForm_FindFirstFocusableChild(control)开头的另一个js文件的引用
>该页面不包含一些隐藏字段,例如__LASTFOCUS,__ EVENTTARGET和__EVENTARGUMENT
>该页面不包含使用document.forms [‘aspnetForm’]和定义__doPostBack的脚本块.
>该页面不包含执行Sys.WebForms.PageRequestManager._initialize的脚本块
>其他一些初始化脚本不存在(设置焦点,创建updateprogress等)
不知何故,似乎框架决定它不需要这些脚本并且不会发出它们.鉴于所有脚本都是相互关联的,必然有一个共同的原因.这可能与未包含* .skin属性的原因有关.有任何想法吗?我会考虑浏览器功能,但这只发生在后续访问网站,而不是第一次.
编辑:
绝对看起来像浏览器功能问题.
有效的请求:
用户代理:Mozilla / 5.0(iPad; U; cpu OS 4_3_3,如Mac OS X; en-us)AppleWebKit / 533.17.9(KHTML,类似Gecko)版本/ 5.0.2
请求不:
用户代理:Mozilla / 5.0(iPad; U; cpu OS 4_3_3,如Mac OS X; en-us)AppleWebKit / 533.17.9(KHTML,如Gecko)Mobile / 8J2
解决方法
解决方案是将以下内容添加到所有ASP.NET页面中(通过将其添加到所有ASP.NET页面派生自的基页).
protected void Page_PreInit(object sender,EventArgs e) { if (Request.UserAgent != null && Request.UserAgent.IndexOf("AppleWebKit",StringComparison.CurrentCultureIgnoreCase) > -1) { this.ClientTarget = "uplevel"; } }
(我尝试创建一个* .browser文件但是失败了,因为它似乎没有出现我可以从我自己的文件中引用框架的* .browser文件.)