【问题标题】:document.write become invalid within Javascript file which is added by appendChilddocument.write 在 appendChild 添加的 Javascript 文件中变得无效
【发布时间】:2013-08-16 18:05:30
【问题描述】:

当我在 index.html 直接的 body 标签中添加脚本标签时,如下所示:

<script type="text/javascript" src='**doc_write_in_it.js**'></script>

效果很好,“test doc write”在那里输出。

但如果我用另一种方式写,如下所示:

<script type="text/javascript">
    var model = document.createElement('script');
    model.setAttribute('type','text/javascript');
    model.setAttribute('src','doc_write_in_it.js');
    var bd = document.getElementsByTagName('body')[0];
    bd.appendChild(model);
</script>   

document.write 在 appendChild 添加的 Javascript 文件中失效。

doc_write_in_it.js 中的警报会显示,但 document.write 中的文本不会。

doc_write_in_it.js文件是这样的:

alert('activited');
document.write('test doc write");

希望有人可以帮助... 非常感谢...

【问题讨论】:

  • 您是否尝试在代码周围添加 onload 或在正文关闭前最后添加?
  • 我试图把它放在一个函数中,但结果是一样的,'alert' 显示自己或 'console.log' 显示自己,除了 'document.write'

标签: javascript appendchild document.write createelement


【解决方案1】:

如上所述,当页面已经加载时,document.write 不起作用。 我建议尽可能使用 innerHTML 属性。

示例:

var bd = document.getElementsByTagName('body')[0];
bd.innerHTML = "some text";

【讨论】:

    【解决方案2】:

    document.write 将覆盖它之前的任何其他内容。因此,如果您绝对确定这是您想要做的事情。然后您可能应该等待页面加载,然后触发 document.write。下面的内容..

    <script>
    function my_onload_fn() {
        document.write("test document write");
    }
    </script>
    
    <body onload="my_onload_fn();">
    

    【讨论】:

    • 在我的情况下,'document.write' 似乎已停用或由于某些其他原因,即使我将其放在 window.onload 函数中,它也不会输出任何内容。
    • @auCrux 那么你看到了什么?警报是否出现?并且 document.write 没有......或者它们都不执行?
    • @auCrux 在 doc_write_in_it.js 中,将 alert 和 document.write 放在一个函数中......并在 html 页面上调用该函数 onload。我想知道 document.write 是否在其他任何事情发生之前就覆盖了页面......
    • 我试图把它放在一个函数中,但结果是一样的,'alert' 显示自己或 'console.log' 显示自己,除了 'document.write'
    【解决方案3】:

    实际上,document.write 不会影响页面的加载时间,但您可以调用 document.open() 使其成为可能。

    将脚本代码放在script标签中是同步的,而通过DOM操作加载脚本文件是异步的,所以,如果页面很简单,页面可能在document.write(..)运行时已经加载,并使document.write(...)不做任何事情document.open() 未被调用。

    alert('activited');
    document.open();
    document.write('test doc write');
    document.close();
    

    这会奏效。 并查看此link 以了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      • 2019-08-07
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多