是否可以在脚本执行之前使用getElementsByTagName并修改标记之间的文本。例如,如果初始页面包含以下内容:
<script>alert("original text");</script>
有可能把它改成吗
<script>alert("modified text");</script>
通过瞄准DOM 中的标签
document.getElementsByTagName('script')[0]
不,这是不可能的。脚本将在加载并解析到文档中后立即执行。
任何试图更改它的脚本要么因为它还没有被解析到文档中而找不到它,要么在它已经执行之后才找到它。
否。
在没有defer
属性等特殊情况的情况下,<script>
标记中的内联脚本在解析后立即执行。当另一个脚本能够在DOM中看到它们时,它们已经运行了。
你可以这样做,但这并不是你想要的。
将第一个保存到脚本中。并将第一个加载到标头中。然后一旦运行,运行以下脚本:
var scripts = document.getElementsByTagName ( "script" );
var l = scripts.length;
for ( var i = 0; i < l; ++ i )
{
if ( scripts [i].src = "myfile.js" )
{
scripts [i].parentNode.innerHTML = "<script>alert('modified text');</script>";
}
}
但这只会改变之后的事情。
老实说,我不明白你为什么要这么做?为什么不打电话给其中一个而不是另一个呢?