【问题标题】:$(document).ready not Working$(document).ready 不工作
【发布时间】:2011-08-30 11:13:44
【问题描述】:

我正在尝试使用 ASP.NET 运行 jQuery 和 WebMethods;我在 母版页 中添加了一个 ScriptManager,并在内容页上添加了一个内容

<asp:Content ID="ch" ContentPlaceHolderID="cHead" runat="server">
    <script language="javascript" type="text/javascript">
       $(document).ready(function () {
          alert("hi");
       });
    </script>
</asp:Content>

但是这永远不会触发,我错过了什么?

【问题讨论】:

  • JavaScript 在 jQuery 1.6 中工作,如下所示:jsfiddle.net/VRA98 还有其他问题。您的浏览器是否显示 JavaScript 错误图标?当您查看页面源代码时,是否有 JavaScript? (可能服务器端的代码隐藏了一个包含 JavaScript 的控件)。
  • 发布您的 jquery 包含代码..

标签: jquery asp.net ajax


【解决方案1】:
  • 检查您的脚本是否必须在 jQuery 链接之后写入或加载。

<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>

//after link >> write codes...

<script>
    $(document).ready(function(){
      //your code
    })(jQuery);
</script>

【讨论】:

    【解决方案2】:

    我遇到了类似的问题,但我通过这种方式解决了:

    // wait until DOM is loaded
    $(document).ready(function(){
    
        console.log("DOM is ready");
    
        // wait until window is loaded (images, links etc...)
        window.onload = function() {
    
            console.log("window is loaded");
            var your_html_element = document.getElementById("your_html_element_ID"),
    
        };
    });
    

    【讨论】:

      【解决方案3】:

      一种可能,看看:

      <script language="javascript" type="text/javascript" src="./jquery-3.1.1.slim.min.js" />
      

      对

      <script language="javascript" type="text/javascript" src="./jquery-3.1.1.slim.min.js"></script>
      

      第一种方法实际上是错误的,但是浏览器根本没有抱怨。 您需要确保您确实以正确的方式关闭了 javascript 标记。

      【讨论】:

        【解决方案4】:
        function pageLoad() {
            console.log('pageLoad');
            $(document).ready(function () {
                alert("hi");
            });
        };
        

        它是 ScriptManager ajax 造成的问题 改用 pageLoad()

        【讨论】:

          【解决方案5】:

          我已经从其他.php 项目中复制粘贴了我的内联js,在该代码块内有一些php 代码输出一些值,现在由于我的新文件中没有定义该变量,它正在生成典型的phpundefined warning/error,因此js 代码被搞砸了,并且没有响应任何事件,即使alert("xyz"); 也会默默地失败!!尽管错误的行接近文件末尾,但js 也会死掉,

          没有任何错误!!! >:(

          现在令人困惑的一件事是调试器控制台/输出没有给出任何提示/错误/警告,js 正在默默地死去。

          因此,请尝试检查您是否将 php 内联编码为 js,并查看它是否输出任何错误。删除/排序后,您的 js 应该可以正常工作。

          【讨论】:

            【解决方案6】:

            ready 停止工作时的一种可能性是,您的 JavaScript 代码在某处引发了 $(document).ready(...) 或 $(...) 调用中的异常,这将停止处理其余的 ready 块。确定发生这种情况的单个页面并检查它是否存在其他地方可能存在的错误。

            【讨论】:

            • 我遇到了类似的问题——我的页面中确实存在一些与 jQuery 相关的错误。修复后,一切正常。
            • 对我来说,发生这种情况是因为我忘记了bower install 来安装一些第三方 JS 库。当我尝试从这些库中加载其中一个文件时,Laravel 呈现了一个 404 页面,这显然由于包含非 JS 代码而引发了错误。
            • 我希望我能早点找到你的答案!谢谢。
            • 谢谢,这也是我遇到问题的原因。我不认为其他块中的错误会停止所有 document.readys
            • 这正是我的问题。一个 JS 函数默默地抛出一个异常,杀死了我所有剩余的 javascript。修复未捕获的异常修复了它。给我点赞! ;-)
            【解决方案7】:

            如果主机页面是 HTTPS 并且包含的​​ javascript 源路径是 HTTP,则会发生这种情况。这两个协议必须相同,HTTPS。告诉尾巴的标志是在 Firebug 下检查并注意到 JS 被“拒绝访问”。

            【讨论】:

              【解决方案8】:

              而不是使用这个:

              $(document).ready(function() { /* your code */ });
              

              使用这个:

              jQuery(function($) { /* your code */ })(jQuery);
              

              它更简洁并且做同样的事情,它也不依赖$ 变量作为jQuery 对象。

              【讨论】:

              • 检查您的评论,该代码将不起作用。评论应该是/* your code */,你的例子是正确的
              • @harshal lonare,是的,它确实适用于该代码,但为什么不适用于 $(document)?
              【解决方案9】:

              验证以下步骤。

              1. 你是否包含了 jquery
              2. 检查 firebug 中的错误

              这些东西应该可以解决问题

              【讨论】:

              • 如果这没有帮助并且您没有收到任何错误,请尝试在这些步骤中添加一些console.log('step info')s,并注意它们是否都在正确的时间输出到控制台。 . 因为:jQuery CAN silent 在某些错误情况下退出...
              猜你喜欢
              • 2023-03-31
              • 1970-01-01
              • 2017-03-25
              • 2014-04-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多