Javascript 确保脚本标记作为正文中的第一个标记包含?

Javascript 确保脚本标记作为正文中的第一个标记包含?,javascript,Javascript,我有一个脚本文件,我希望第三方实现者将其包含在他们的网页中 我希望这个脚本是正文中包含的第一个标记,所以 <body> <script type="text/javascript" src="/my_script.js"></script> ... ... 在不使用任何第三方库的情况下执行此操作的最佳方式是什么 我的目的是在呈现任何页面之前运行此脚本。如果没有正确包含标记,我想向开发人员显示一条错误消息,告诉他们将标记作为正文中的第一个标记 编辑:这个脚

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

我希望这个脚本是正文中包含的第一个标记,所以

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

...
在不使用任何第三方库的情况下执行此操作的最佳方式是什么

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


编辑:这个脚本将用于防止点击劫持,如果嵌入程序不在白名单中,它将基本上隐藏整个文档。为什么它必须是页面中的第一个脚本?确保在运行脚本之前没有任何可单击的内容可见,并确保其他脚本错误也不会干扰此脚本的运行。所以它不一定是第一个,但它应该非常接近第一个;-)这种方法是,但正试图成为一种更为“直接插入”的解决方案。

当我在想象什么要求会驱使你需要成为body之后的第一个标签时,我将把它放在一边,回答你的技术问题。查询
document.body.childNodes
将为您提供加载到susfar的节点。您可以使用该信息来确定您是否排在第一位

$(document).on(“pagecreate”,function(){//do your loading stuff}

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

参考资料:

正文中的第一个元素 在
/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);
检查脚本是否为第一个脚本
我的第一个猜测是,在你的js中,数一数body标记的子项,期望通过DOM找到脚本标记。确保你的标记是第一个。但是这似乎是个坏主意,如果我需要在脚本之前运行一些东西呢?他没有提到使用jQuery(或其他提供$的框架)。此外,除非加载了jQuery(不是当前的最佳实践),否则在希望运行其脚本时它将不可用。如果
document.currentScript
不可用(Internet Explorer),则可以使用
var currentScript=document.currentScript | |函数(){var s=document.getElementsByTagName('script');返回s[s.length-1];}();
if (( document.scripts || document.getElementById('script') )[0] == document.currentScript)