当前位置: 首页 > 面试题库 >

如何检测是否加载了javascript文件?

漆雕成弘
2023-03-14
问题内容

加载JavaScript文件时是否会触发事件?由于YSlow建议将JavaScript文件移动到页面底部,因此出现了问题。这意味着
$(document).ready(function1)function1加载包含其代码的js文件之前会触发该事件。

如何避免这种情况?


问题答案:

我没有方便的参考,但是脚本标记是按顺序处理的,因此,如果将$(document).ready(function1)脚本标记放在定义function1等的脚本标记之后,则应该可以。

<script type='text/javascript' src='...'></script>
<script type='text/javascript' src='...'></script>
<script type='text/javascript'>
$(document).ready(function1);
</script>

当然,另一种方法是通过在构建过程中合并文件来确保总共只使用一个脚本标签。(除非您要从某个地方的CDN加载其他文件。)这也将有助于提高页面的感知速度。

编辑:只是意识到我并没有真正回答您的问题: 我不认为有一个跨浏览器事件被解雇,不。 如果您努力工作,请参阅下文。
您可以测试符号并使用setTimeout重新安排:

<script type='text/javascript'>
function fireWhenReady() {
    if (typeof function1 != 'undefined') {
        function1();
    }
    else {
        setTimeout(fireWhenReady, 100);
    }
}
$(document).ready(fireWhenReady);
</script>

…但是如果您的脚本标签顺序正确,则不必这样做。

更新:您可以script根据需要动态获取添加到页面中的元素的加载通知。要获得广泛的浏览器支持,您必须做两件事情,但是作为一种组合技术,它可以起作用:

function loadScript(path, callback) {

    var done = false;
    var scr = document.createElement('script');

    scr.onload = handleLoad;
    scr.onreadystatechange = handleReadyStateChange;
    scr.onerror = handleError;
    scr.src = path;
    document.body.appendChild(scr);

    function handleLoad() {
        if (!done) {
            done = true;
            callback(path, "ok");
        }
    }

    function handleReadyStateChange() {
        var state;

        if (!done) {
            state = scr.readyState;
            if (state === "complete") {
                handleLoad();
            }
        }
    }
    function handleError() {
        if (!done) {
            done = true;
            callback(path, "error");
        }
    }
}

以我的经验,错误通知(onerror)并非100%跨浏览器可靠。另请注意,某些浏览器会同时使用这两种机制,因此请使用done变量以避免重复的通知。



 类似资料:
  • 我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。

  • 问题内容: 今天早上有一篇帖子问有多少人禁用JavaScript。然后我开始想知道可以使用什么技术来确定用户是否禁用了它。 有谁知道一些简短/简单的方法来检测是否禁用了JavaScript?我的目的是警告您,如果没有启用JS的浏览器,站点将无法正常运行。 最终,我想将它们重定向到可以在没有JS的情况下运行的内容,但是我需要将此检测作为占位符才能启动。 问题答案: 我假设你正在尝试确定是否提供Jav

  • 问题内容: 我想在文档加载后调用一个函数,但是文档可能尚未加载完成,也可能尚未加载完成。如果确实加载,那么我可以调用该函数。如果未加载,则可以附加事件监听器。在onload已经触发之后,我无法添加事件监听器,因为它不会被调用。那么如何检查文档是否已加载?我尝试了下面的代码,但不能完全正常工作。有任何想法吗? 问题答案: 不需要galambalazs提到的所有代码。在纯JavaScript中实现跨浏

  • 问题内容: 我正在尝试检查用户单击按钮后是否已加载iframe。 我有 的HTML 有什么建议么? 顺便说一下,我的iframe是动态创建的。它不会随初始页面加载一起加载。 问题答案: 您可以尝试使用() 更新: 使用普通格式 更新: 您也可以尝试一下(动态iframe)

  • 问题内容: 我正在尝试检查Jquery库是否已加载到HTML页面上。我正在检查它是否有效,但是有些不正确。这是我所拥有的: 问题答案: 事情不对 好吧,您正在使用jQuery检查jQuery是否存在。如果未加载jQuery,则根本不会运行,并且回调也不会执行,除非您正在使用另一个库,并且该库碰巧共享相同的语法。 删除您的(使用类似方法):

  • 问题内容: 我有一个使用以下功能的功能: 创建链接元素并设置href = cssFile。 将链接元素插入head标签中。 创建一个div元素。 使用setAttribute设置类名称 身体上的div。 现在使用获取CSS规则值。 现在正在返回默认值,如果我在调用之前使用Firebug 等待 断点,则它将从注入的CSS返回CSS规则。 问候, 穆尼姆 问题答案: 这实际上是我所做的。 为了确保加载