javascript - 使用 JQuery 延迟加载 div,代码在 Chrome 中不起作用(window.onload)

标签 javascript jquery html google-chrome

我正在使用下面的代码延迟加载一个 div,直到加载整个网页。它在 Firefox 和 Safari 中完美运行(因为它们在代码中都有行以确保它专门针对每个,我还没有测试过 IE),但在 Chrome 中却不行(我认为它应该与 一起使用window.onload).

有人可以帮我解决这个问题吗?

<script type="text/javascript">

function insertFB(){
    var html='<div class="fb-page" data-href="https://www.facebook.com/bobcaputolivingwell" data-small-header="false" data-adapt-container-width="true" data-hide-cover="false" data-show-facepile="true" data-show-posts="true"><div class="fb-xfbml-parse-ignore"><blockquote cite="https://www.facebook.com/bobcaputolivingwell"><a href="https://www.facebook.com/bobcaputolivingwell">Bob Caputo Living Well</a></blockquote></div></div>';
    $("#FB_PAGE").html(html);
}

if (document.addEventListener){
    document.addEventListener("DOMContentLoaded", insertFB, false);
}

if (/WebKit/i.test(navigator.userAgent)){
    var _timer = setinterval(function(){
        if(/loaded|complete/.test(document.readyState)){
            insertFB();
        }
    },10);
}

window.onload = insertFB();
</script>

最佳答案

好吧,首先我会具体回答你的问题:

它在 Google Chrome 中不起作用,因为您使用的是 setinterval,而 Javascript 是一种区分大小写的语言。该方法的正确名称是 setInterval


除此之外,您的代码充满错误,您检查文档中的方法,并且不使用 else if 来检查其他方法,所以您总是检查所有,并且可能调用您想要的方法两次或更多次。

另一件事是你正在使用 setInterval 但你永远不会清除间隔,所以它会永远每 10 毫秒运行一次。

最后,当您尝试将它附加到 onload 事件时,您正在调用 insertFB 函数。你不应该为此使用括号。


看看Can I use addEventListener?Can I use DOMContentLoaded? , 你会看到所有主流浏览器都支持它,甚至一些旧浏览器,如果你真的需要支持 IE8(现在不太可能),你应该只使用另一种方式。

关于javascript - 使用 JQuery 延迟加载 div,代码在 Chrome 中不起作用(window.onload),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918562/

相关文章:

javascript - 如何将 javascript var 传递到函数中?

javascript - 使用 Java Selenium 的 Angular 4 等待条件

javascript - React Redux 通过函数从子组件向父组件传递参数

jquery 替换不适用于单引号

jquery - 如何使用 jquery 覆盖包含 '!important' 的 css?

javascript - 更改通过谷歌标签管理器添加并在 iframe 中异步加载的小部件的 css 属性

javascript - 如何将 JQuery 效果限制为嵌套 block 中的一个元素

javascript - 在 Knockout JS 中延迟加载

html - DRY 减少 sibling 之间的代码共享

html - CSS 文本尊重边框半径