修改<script>标记</script>之间的文本

时间:2013-07-08 00:28:26

标签: javascript dom

是否可以使用getElementsByTagName并在脚本执行之前修改标记之间的文本。例如,如果初始页面包含以下内容:

<script>alert("original text");</script>

是否可以将其更改为

<script>alert("modified text");</script>

通过定位DOM中的标记

document.getElementsByTagName('script')[0]

3 个答案:

答案 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>";
   }
}

但这只会改变事情。

说实话,我不明白你为什么要这么做呢?为什么不打电话给那个而不是另一个?