Javascript 检测是否已加载外部脚本
使用JavaScript,是否有方法检测外部脚本(来自第三方供应商)是否已完全加载 所讨论的脚本用于拉入并嵌入作业列表的标记,不幸的是,它没有使用任何变量或函数。它使用Javascript 检测是否已加载外部脚本,javascript,jquery,Javascript,Jquery,使用JavaScript,是否有方法检测外部脚本(来自第三方供应商)是否已完全加载 所讨论的脚本用于拉入并嵌入作业列表的标记,不幸的是,它没有使用任何变量或函数。它使用document.write输出嵌入到我的页面中的所有内容 理想情况下,我希望在等待外部脚本加载时显示某种加载消息,如果加载失败,则显示一条“很抱歉,稍后再查看…”消息 我在站点上使用jQuery,但是在调用jQuery之前会调用这个外部脚本 下面是文档的内容。从外部脚本编写内容如下: document.write('<di
document.write
输出嵌入到我的页面中的所有内容
理想情况下,我希望在等待外部脚本加载时显示某种加载消息,如果加载失败,则显示一条“很抱歉,稍后再查看…”消息
我在站点上使用jQuery,但是在调用jQuery之前会调用这个外部脚本
下面是文档的内容。从外部脚本编写内容如下:
document.write('<div class="jt_job_list">');
document.write("
<div class=\"jt_job jt_row2\">
<div class=\"jt_job_position\">
<a href=\"http://example.com/job.html\">Position Title</a>
</div>
<div class=\"jt_job_location\">City, State</div>
<div class=\"jt_job_company\">Job Company Name</div>
</div>
");
document.write(“”);
文件。写(“
城市、州
工作公司名称
");
你可以给任何你想要的ID
并使用document.getElementById(“ID”)检查是否已加载ID代码>
这就是您想要的吗?我不确定我是否完全理解?将函数附加到加载事件:
<script type="text/javascript" src="whatever.js" onload ="SomeFunction()" />
至于您的加载…
问题,请尝试显示一个要加载的div,然后在onload
函数中显示它。不过,请确保处理脚本无法加载的情况。脚本标记阻止下载,因此只要依赖于脚本的内容低于加载脚本的位置,就可以了。即使脚本在页面主体中是串联的,这也是正确的
这是一个很好的例子
如果异步加载脚本,这显然不起作用
在浏览器继续解析页面之前,将立即获取并执行没有async或defer属性的脚本
来源:您可以在页面上的脚本块后面放置一个脚本块:
<script src="external_script.js"></script>
<script type="text/javascript">
ExternalScriptHasLoaded();
</script>
ExternalScriptHasLoaded();
感谢上述帮助,尤其是ngmiceli提供的Steve Souders链接
我决定采取可能是“懒惰”的方法,同时也放弃了“加载”的信息:
$(文档).ready(函数(){
如果($('.jt_作业列表')。长度==0){
$(“#作业板”).html(很抱歉,作业板当前不可用。请几分钟后重试。”;
};
});
非常简单,但我想看看dom中是否有一个具有.jt\u job\u list
类的元素。如果不是,我会显示一条错误消息。这对我来说很有效:但是,它依赖于大多数现代浏览器支持的较新的querySelector界面。但是如果您使用的是真正的旧浏览器,那么您可以使用getElement。。。然后运行for循环
function loadJS(file, callback, error, type) {
var _file = file ;
var loaded = document.querySelector('script[src="'+file+'"]') ;
if (loaded) {
loaded.onload = callback ;
loaded.onreadystatechange = callback;
return
}
var script = document.createElement("script");
script.type = (typeof type ==="string" ? type : "application/javascript") ;
script.src = file;
script.async = false ;
script.defer = false ;
script.onload = callback ;
if (error) {
script.onerror = error ;
}
else {
script.onerror = function(e) {
console.error("Script File '" + _file + "' not found :-(");
};
}
script.onreadystatechange = callback;
document.body.appendChild(script);
}
这个脚本是如何包含的?通过
中的
标记?它通过
标记包含,但不在头部。它显示在
中(因为CMS用户嵌入了这种东西)。很好,但是当async=true
时,您有解决方案吗?
function loadJS(file, callback, error, type) {
var _file = file ;
var loaded = document.querySelector('script[src="'+file+'"]') ;
if (loaded) {
loaded.onload = callback ;
loaded.onreadystatechange = callback;
return
}
var script = document.createElement("script");
script.type = (typeof type ==="string" ? type : "application/javascript") ;
script.src = file;
script.async = false ;
script.defer = false ;
script.onload = callback ;
if (error) {
script.onerror = error ;
}
else {
script.onerror = function(e) {
console.error("Script File '" + _file + "' not found :-(");
};
}
script.onreadystatechange = callback;
document.body.appendChild(script);
}