如何避免极端延迟的JS文件冲突?

时间:2017-06-30 19:18:55

标签: javascript

我有一个插件,目前安装在大约30,000个WordPress网站上。在某些情况下,我们发现客户可以尽其所能提高页面加载速度。这当然是一个很好的目标,因为我们都知道它可以影响SEO,用户体验和诸如此类的东西。

然而,一个常见的问题是,当人们移动物品或将物品推迟时,可能会造成冲突。事实上,在某些情况下,我实际上看到在加载脚本之前启动了DOM加载事件。我有一小段代码通过PHP输出,因为它是动态的,包含来自服务器的变量,这些变量将传递给JS文件中的函数。

但是,如果DOM加载的事件触发意味着文件应该已经加载,但它们不是,那么我会调用未定义的函数错误。我相信你以前见过的都是。

所以我考虑使用setInterval来检查我的JS文件函数是否存在,然后再向前移动,然后在函数可用时立即清除间隔。

在90%的情况下,setInterval永远不会发射超过一次。在很小比例的情况下,它们会发生异常,它会推迟函数的运行,直到代码可用。

这是一个相信的例子,可以说明我所指的内容:

var check_for_my_function = setInterval( function() {
    if('function' === typeof my_function ) {
        my_function();
        clearInterval(check_for_my_function);
    }
} , 250 );

这是一种安全有效的方法吗?还是有一种更适合实现这种延迟的实际功能?我总是认为我会安全地监听DOM加载的事件,但即便如此,在某些极端用例中也是不成熟的。

0 个答案:

没有答案