javascript - 表示我的 JS 脚本已加载的最佳方式

标签 javascript dom-events unobtrusive-javascript

我有一个 JS 脚本将托管在我的服务器上,其他人将嵌入到他们的 html 中,即

...<code for http://yoursite.example.com />
<script type="text/javascript" src="http://mysite.example.com/awesome.js" />
...<code for http://yoursite.example.com />

我的脚本声明了一个对象,该对象具有一组可访问的属性,可用作 Javascript Object(),即

<script type="text/javascript">
//From http://mysite.example.com/awesome.js
alert(Awesome.Name);
</script>

由于加载时间差异,我似乎需要发出信号,表明我的脚本中的“Awesome”对象已准备就绪。我需要它独立存在,因此不依赖于特定的 JS 框架。

我是否需要发布自己的自定义 JS 事件,或者我的脚本已加载这一简单事实是否会被现有页面级事件之一捕获?我还应该怎么做?

更新:作为引用,如果我将 JS 包含在从 http://mysite.example.com 运行的 HTML 页面中,则 Awesome 对象可用并已填充。当从另一个域包含 JS 文件时,该对象在运行时未定义。

最佳答案

<script>的javascript内容标签是按程序执行的,所以这个

<script type="text/javascript" src="http://mysite.com/awesome.js" />
<script type="text/javascript">
    alert(Awesome.Name);
</script>

只会提醒Awesome.Name的内容如果在任何 previous 脚本标记中找到。

要了解页面上的所有内容是否已完全加载,您必须使用 DOMContentLoaded(适用于 Firefox)和“onreadystatechange”(适用于 ie)。如果您不关心检查 DOM(可能更容易),您也可以简单地检查 window 对象上的 load 事件。

if ( document.addEventListener ) {
    document.addEventListener( "DOMContentLoaded", function(){
         doSomething();   
    }, false );
} else if ( document.attachEvent ) { // IE        
    document.attachEvent("onreadystatechange", function(){
        if ( document.readyState === "complete" ) {
            doSomething();
        }
    });
}

关于javascript - 表示我的 JS 脚本已加载的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/582652/

相关文章:

javascript - 包装 HTML 元素

javascript - 找不到 AngularJS Controller ,因为未定义

javascript - 当进度标签与栏重叠时如何反转进度标签

javascript - 如何使用 JavaScript 检测页面 404 错误?

c# - 第一个 html 帮助程序生成客户端验证属性,而第二个则不

php - 如何在禁用 javascript 时不加载 javascript 文件

javascript - 如何在 React JS 中结合 HighStock 股票图和 HighCharts 气泡图?

javascript - Javascript 事件监听器在触发后是否会被销毁(默认情况下)?

javascript - 如何捕获浏览器关闭事件并通过 JavaScript 向该事件的 Web 服务方法发出请求

javascript - 动态创建的元素上的事件绑定(bind)?