当使用 asp.net scriptmanager 在 web View 中加载站点时,jquery document.ready 不会触发

标签 jquery asp.net uiwebview webview scriptmanager

我在 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/

相关文章:

javascript - JQUERY 在多个无序列表中选择第 n 个列表元素

jquery - 更改 jQuery 对话框中的按钮

c# - 如何在模板字段 gridview 中添加条件按钮?

cocoa-touch - 如何在运行时添加和删除UIscrollview中的 View ?

swift 3 : How can I add the buttons on the UIWeb View

iphone - 所有 View 共享 UIWebView

jquery - ajax.actionlink 路由值中是否可以有一个列表

javascript - 如何读取带有 at 符号 (@) 前缀的对象?

asp.net - 在没有母版页控件的情况下在 asp.net 中打印页面

javascript - 计算表中的行数,如果大于 0,则显示表