【问题标题】:Is $(document).ready() called after loading all script files in the body? [duplicate]加载正文中的所有脚本文件后是否调用 $(document).ready() ? [复制]
【发布时间】:2016-02-22 16:03:13
【问题描述】:

在body中加载脚本js文件后是否调用了$(document).ready()?

如果我将 $(document).ready() 放在脚本元素的头部,它采用回调函数,该函数使用在文件中声明的函数,其脚本元素像这样加载到正文中:

<!DOCTYPE HTML>
<html>
<script src="jquery.js" type="text/javascript"></script>
<script>
$(function(){
hello();
})
</script>
<head>
</head>
<body>

<script src="http://somewhere/helloFuncDeclaration.js" type="text/javascript"></script>

</body>
</html>

这样做是否正确并保证在调用函数 hello() 之前加载 helloFuncDeclaration.js ?

【问题讨论】:

  • $({ hello(); }) 是语法错误

标签: javascript jquery dom document-ready ready


【解决方案1】:

可以肯定的是,使用窗口加载处理程序:

$(window).on('load', hello);

或者像这样使用它:

<script onload="hello()" src="http://somewhere/helloFuncDeclaration.js" type="text/javascript"></script>

【讨论】:

  • 但是也是在加载完所有图片之后调用的,你觉得用load好么!!!
  • 好主意是在声明后调用 helloFuncDeclaration.js 文件中的 hello() 函数或使用此脚本标签的 onload 事件
  • helloFuncDeclaration.js 可能是一些远程库,我想调用该函数或在我自己的代码块中声明一些对象...
  • 我已将 $(document).ready() 用于我自己的自定义 jquery 代码。对于所有广告脚本(如 Google AdSense 或其他提供商),我使用 $(window).load() 激活了它们,效果很好!
【解决方案2】:

当然,你可以使用window.load

$(window).load(function(){
   hello();
})

当一个元素和所有子元素都有 已完全加载。此事件可以发送到任何元素 与 URL 相关联:图像、脚本、框架、iframe 和 窗口对象。

【讨论】:

    【解决方案3】:

    $(document).ready() 在所有资源加载后运行,所以 - 是的

    【讨论】:

    • 它在 DOM 准备好之后运行,所以没有
    • 我不明白为什么这个答案被否决了。 stackoverflow.com/questions/2397534/…stackoverflow.com/questions/6195257/… 明确声明正文中的 script 将始终在 ready 事件触发之前加载。
    • 不,它是在 DOM 元素下载后调用的,不是所有资产。
    • 表示body标签内的脚本。理想情况下,您的 body 标记内没有脚本。
    • 这个答案是错误的,它可能导致 JS 中的错误。 document.ready 事件并不意味着所有来自 body 的 JS 都已加载。
    猜你喜欢
    • 2012-05-10
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 2010-12-24
    • 1970-01-01
    相关资源
    最近更新 更多