是否可以使用getElementsByTagName并在脚本执行之前修改标记之间的文本。例如,如果初始页面包含以下内容:
<script>alert("original text");</script>
是否可以将其更改为
<script>alert("modified text");</script>
通过定位DOM中的标记
document.getElementsByTagName('script')[0]
答案 0 :(得分:1)
没有
如果没有像defer
属性这样的特殊情况,<script>
标记中的内联脚本会在解析后立即执行。当另一个脚本可以在DOM中看到它们时,它们已经被运行了。
答案 1 :(得分:1)
不,那是不可能的。该脚本将在加载并解析到文档后立即执行。
任何试图改变它的脚本都会找不到它,因为它尚未被解析到文档中,或者在它已经执行之后找到它。
答案 2 :(得分:0)
你可以做到这一点,但这不是你想要的。
将第一个保存到脚本中。并加载标题中的第一个。然后,一旦运行,运行此脚本:
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>";
}
}
但这只会改变事情。
说实话,我不明白你为什么要这么做呢?为什么不打电话给那个而不是另一个?