我在 asp.net 4 中为客户端构建了一个网站,该网站大量使用 jQuery (1.7.2)。该网站在所有现代浏览器、移动客户端等中运行良好。
客户为其企业拥有一个 Twitter 帐户,当有人关注他们时,他们会收到一条包含该网站链接的自动响应消息。他提出了一个问题,即当客户在 iOS 设备上使用 Twitter 应用程序单击该链接时,该网站无法正常工作。
我已经确定了这一事实:twitter 使用 webview 来显示网站而不是 safari,当我尝试通过 javascript 获取 asp.net scriptmanager 实例时,在这个 webview 中似乎出现了某种错误,所以文档永远不会准备好,因此不会再触发 jQuery document.ready 事件!如果我将后续脚本放入 window.load
中,那么它们就可以正常工作。
我创建了一个非常简单的页面来测试它,其整体如下所示:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
<script type="text/javascript">
$(document).ready(function () {
if (typeof (Sys) === "object") {
var manager = Sys.WebForms.PageRequestManager.getInstance();
}
});
$(document).ready(function () {
alert("staging1");
});
$(window).load(function () {
alert("staging2");
});
</script>
</form>
</body>
</html>
因此,如果我在 web View 中加载该页面,我只会从 window.load 中收到第二个警报。如果我取出声明变量manager
的行。当第二个 document.ready 事件触发时,我收到了这两个警报。
如果我在任何浏览器中运行该页面,我总是会收到两个警报。
有人遇到过这个问题,或者有任何理由解释为什么它不起作用吗?
非常欢迎任何帮助/专业知识!
谢谢
最佳答案
您必须这样做:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
if (typeof (Sys) === "object") {
var manager = Sys.WebForms.PageRequestManager.getInstance();
}
});
$(document).ready(function () {
alert("staging1");
});
$(window).load(function () {
alert("staging2");
});
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm" runat="server"></asp:ScriptManager>
</form>
</body>
</html>
关于当使用 asp.net scriptmanager 在 web View 中加载站点时,jquery document.ready 不会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13195343/