Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何识别已加载JavaScript文件_Javascript_Jquery_Html_Dom - Fatal编程技术网

如何识别已加载JavaScript文件

如何识别已加载JavaScript文件,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,我有以下问题: 我的站点正在head部分加载jQuery。它有“async”标志,所以它是异步加载的。 我已经使用jQuery编写了一些函数来处理内容 当我在jQuery文件的末尾实现这个函数时,有时候jQuery会在整个网站DOM之前加载。这意味着我的函数找不到特殊元素,什么也不做。 如果我在HTML文件的末尾实现这个功能,当DOM已经加载时,正好网页完成了,而jQuery没有。然后我得到一个错误,jQuery引用没有定义 有人知道我如何解决这个难题吗?加载DOM和JS文件后,异步加载JS并调

我有以下问题:

我的站点正在head部分加载jQuery。它有“async”标志,所以它是异步加载的。 我已经使用jQuery编写了一些函数来处理内容

当我在jQuery文件的末尾实现这个函数时,有时候jQuery会在整个网站DOM之前加载。这意味着我的函数找不到特殊元素,什么也不做。 如果我在HTML文件的末尾实现这个功能,当DOM已经加载时,正好网页完成了,而jQuery没有。然后我得到一个错误,jQuery引用没有定义

有人知道我如何解决这个难题吗?加载DOM和JS文件后,异步加载JS并调用函数

谢谢, 延斯使用

或者,您也可以这样写,这不是最佳实践:

var checkforjquery = setInterval(function() {
  if (window.jQuery) {
    clearInterval(checkforjquery);
    // all your jquery functions
  }
}, 100);

将所有javascript放在页面的末尾,首先是jQuery。大概是这样的:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> <!-- jQuery -->
<script src="script.js"></script> <!-- your code -->
</body>
</html>

您可以使用库。在
head
元素中包含(同步)depend.js文件,将jquery代码封装在

Library(
 "jquery",
 function(){
  //The jQuery itself goes here
});
并通过以下方式包装每个需要jQuery的脚本:

Script(
 "any-name",
 ["jquery"],
 function(){
  //The script body
});
您甚至可以将其用于您的库。如果一个库依赖于另一个库,只需使用
库(“mylib”,“dependency1”,“dependency2”,f)
,其中
f
是库体


希望有帮助。

这并不难,也不需要像其他答案所建议的那样需要额外的库或轮询

脚本标记(包括标记为
async
的标记)支持在加载时调用
onload()
函数,而jQuery在加载DOM时具有$(document).ready()方法。你需要两个都等。因此:

<script async src='jquery.js' onload='jqueryloaded()'></script>
<script>
    function jqueryloaded() {
        $(document).ready(function () {
            // all your code
        });
    }
</script>

函数jqueryloaded(){
$(文档).ready(函数(){
//你所有的代码
});
}

不异步加载jQuery?使您的其他
脚本
标记也异步?“当我在jQuery文件末尾实现这个函数时,有时候jQuery会在整个网站DOM之前加载。”我甚至不会问为什么要将代码添加到jQuery文件中。但是,我希望您了解
ready
处理程序,它在加载DOM后立即执行代码:这不都是关于jQuery$(document).ready()?@fallenPhantasm的吗?这不是它的目的,因为如果不加载jQuery,
$
甚至不可用;Require.js非常流行,但也有其他的,简而言之,这个“问题”已经解决了,嗯。当jQuery尚未加载时,您不能使用
$(窗口).load()
$(文档).ready()
。这就是我添加间隔函数的原因。您的答案显示,您可以做第一件事或第二件事。如果你想要一些不同的东西,那么请编辑你的问题来澄清。你应该把它放在正文中,仍然:)我认为OP的问题是如何解决异步加载jQuery时的问题,而不是如何使jQuery不异步加载。这仍然是有效的HTML吗?我真的不这么认为。干杯,亚历克斯,你说得对。我在上面把它修好了。非常感谢你的提示!我用你说的方法实现了它,但是我得到了一个错误,'jqueryloaded'没有定义。加载jQuery是否可能比加载整个HTML文件和调用此函数更快?或者你还有其他建议吗?嗯。。。如果jquery已经被缓存,这是可能的,尽管我仍然希望它在运行之前解析页面。
async
功能在不同浏览器中不一致。但是为了得到那个错误,我会仔细检查你的代码是否有拼写错误。这是实现jQuery的代码:“”。我看到safari操作了异步,查看html源代码,我得到了“async=”“”。我使用bhamlin的解决方案解决了这个问题。但是我换了订单。首先取消声明函数,然后使用onload事件。这很好,我没有任何问题。谢谢