当前位置: 代码迷 >> JavaScript >> 确保脚本标记作为正文中的第一个标记包括在内? 体内的第一要素 将脚本移到第一个元素 检查脚本是否是第一个脚本
  详细解决方案

确保脚本标记作为正文中的第一个标记包括在内? 体内的第一要素 将脚本移到第一个元素 检查脚本是否是第一个脚本

热度:21   发布时间:2023-06-13 12:17:14.0

我有一个脚本文件,希望第三方实施者将其包含在他们的网页中。

我希望此脚本成为正文中包含的第一个标签,所以

<body>
<script type="text/javascript" src="/my_script.js"></script>
...

在不使用任何第三方库的情况下进行此操作的最佳方法是什么?

我的目的是在呈现任何页面之前运行此脚本。 如果未正确包含标签,我想向开发人员显示一条错误消息,告诉他们将标签作为正文中的第一个标签。

编辑:此脚本将用于防止点击劫持,并且如果嵌入程序不在白名单中,则基本上将隐藏整个文档。 为什么它必须是页面中的第一个脚本? 为了确保在脚本运行之前没有可点击的内容可见,并确保其他脚本错误也不会干扰脚本的运行。 因此,它不一定绝对需要优先考虑,但它应该非常接近于优先;-)这种方法 ,但它正试图更多地“落入”解。

体内的第一要素

/my_script.js 您可以添加以下代码:

if (document.body.firstElementChild == document.currentScript) {
    // Is first element
} else {
    // Is not first element
}

我不确定为什么需要这样做,但是这里是这样做的方法。

将脚本移到第一个元素

如果要移动脚本:

document.body.insertBefore(document.currentScript, document.body.firstChid);
document.currentScript.parentElement.removeChild(document.currentScript);

检查脚本是否是第一个脚本

if (( document.scripts || document.getElementById('script') )[0] == document.currentScript)

虽然我在想出什么要求会导致您急需成为身后的FIRST标签时遇到一些麻烦,但我暂时将其搁置一旁以回答您的技术问题。 查询document.body.childNodes将为您提供到目前为止已加载的节点。 您可以使用该信息来确定您是否排在第一位。

$(document).on(“ pagecreate”,function(){//做您的加载工作}

这将在页面呈现之前触发事件。

参考: :

  相关解决方案