问题描述
我有一个脚本文件,希望第三方实施者将其包含在他们的网页中。
我希望此脚本成为正文中包含的第一个标签,所以
<body>
<script type="text/javascript" src="/my_script.js"></script>
...
在不使用任何第三方库的情况下进行此操作的最佳方法是什么?
我的目的是在呈现任何页面之前运行此脚本。 如果未正确包含标签,我想向开发人员显示一条错误消息,告诉他们将标签作为正文中的第一个标签。
编辑:此脚本将用于防止点击劫持,并且如果嵌入程序不在白名单中,则基本上将隐藏整个文档。 为什么它必须是页面中的第一个脚本? 为了确保在脚本运行之前没有可点击的内容可见,并确保其他脚本错误也不会干扰脚本的运行。 因此,它不一定绝对需要优先考虑,但它应该非常接近于优先;-)这种方法 ,但它正试图更多地“落入”解。
1楼
体内的第一要素
在/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)
2楼
虽然我在想出什么要求会导致您急需成为身后的FIRST标签时遇到一些麻烦,但我暂时将其搁置一旁以回答您的技术问题。
查询document.body.childNodes
将为您提供到目前为止已加载的节点。
您可以使用该信息来确定您是否排在第一位。
3楼
$(document).on(“ pagecreate”,function(){//做您的加载工作}
这将在页面呈现之前触发事件。
参考: :