繁体   English   中英

单个JavaScript文件。 不插入内联脚本,如何检查特定页面是否已加载?

[英]Single JavaScript file. Without inserting inline scripts, how can I check if a specific page has loaded?

不插入内联脚本,如何检查特定页面是否已加载? 通常,我会使用window.onload在页面的html头中放置一个内联脚本来调用函数,但是如何使用链接的JavaScript文件来实现此目的?

例如,假设我有一个打开特殊页面的按钮,并且需要在开始使用DOM之前准备好DOM。 我是否应该使用在每个主体底部链接的两个JavaScript文件,然后将所有内容包装在onload事件调用的函数中?

将脚本标签放在页面底部,即最终的body标签之前,是一种很常见的做法。 这将意味着DOM将在此时加载,并且可以安全地执行您的代码。 这也意味着您的脚本要到最后才下载,从而为访问者带来更好的体验。

如果您想对此加以说明,则可以在body标签上添加一个事件侦听器,并在加载body之后运行代码。 我不确定您的确切用例,因此不知道这是否可以更好地满足您的目的。 假设您没有做任何不寻常的事情,并且您的脚本被放置在最终body标签之前,那么这不会有太大的额外差别,因为大多数DOM都已经加载了。 如果您确实想这样做,则可以使用以下代码。

var bodyElement = document.getElementsByTagName("BODY")[0];
bodyElement.onload = function () {
    // Your loading function
}

让A为带有单击按钮的页面。
令B为在A的按钮上单击打开的特殊页面

我很难理解您要问的是什么,但这听起来像是“ A在B之前”。

如果在该页面完成加载后可单击页面A上的按钮,则可以安全地假定A和B均已加载,则在页面B完成加载后运行的脚本。 仅当可以保证A加载B时,才可以在B中编写依赖于A的逻辑。如果绕过A直接访问B会发生什么情况?

B的可能标记如下:

<html>
    <head>
        <title>Special Page</title>
    </head>
    <body>

        <script src="test.js"></script>
    </body>
</html>

上面链接的test.js文件:

window.onload = function(){
    console.log('special page is loaded');
};

B页上的onload事件可以安全地假定A已加载,但前提是您可以保证A始终调用B。

我不知道您是否要尝试将页面B加载到iframe或将页面从A重定向到B或通过Ajax和HTTP GET将B提取到A中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM