【问题标题】:How can i load javascript after some time? [duplicate]一段时间后如何加载javascript? [复制]
【发布时间】:2014-05-19 13:34:44
【问题描述】:

我有一个正在执行 javascript 的文件。我希望它在一段时间后加载。例如,我的脚本是 <script>document.write("hello")</script>,它在我打开文件时直接加载,我希望它在大约一段时间后加载5秒。你能帮我吗,因为我是 Javascript 的初学者。请帮我这样做。在此先感谢

【问题讨论】:

  • 您可以使用document.createElement()创建动态脚本元素
  • @ArunPJohny - 没有看到脚本做了什么,我认为你建议的副本没有涵盖 OPs 问题。
  • @ArunPJohny 副本并不完全是副本。
  • @user3651145,请考虑将示例更改为 alert("Hello"),似乎人们对您问题的意图感到困惑,因为我看到您的意图是在延迟后加载脚本而不是在文档中写入内容。

标签: javascript jquery


【解决方案1】:

你可以像这样使用setTimeout函数:

setTimeout(function() {
      // Do something after 5 seconds
}, 5000);

@mplungjan 在 cmets 中提到的一件事是,当 document.write 执行时,它会擦除​​文档并且所有脚本都将被删除,因此您不应该使用 document.write,而是使用一些替代@mplungjan 发布的方式。

【讨论】:

  • 不在使用 document.write 的脚本上 - 除非先转换脚本
  • 我没明白你的意思
  • 如果他写的脚本里面的脚本是使用document.write,那么你的脚本会在5秒后擦除文档。您需要提供更多信息。我会将我的评论转换为您的答案
  • 如果在我的块中我们调用 document.write 的函数体中有什么问题??
  • 是的,页面加载后执行的第一个 document.write 也会彻底擦除页面中的所有脚本
【解决方案2】:

页面加载后您不能 document.write。如果这样做,页面将被擦除。

更改脚本以稍后执行非常容易。例如,将内容包装在一个函数中,并将其中的任何 document.write(请向我们展示代码)更改为字符串连接

function concatIt() {
  var text = "";
  text += "some string previously written with document.write";
  text += "some string previously written with document.write";
  text += "some string previously written with document.write";
  return text; // send text to calling statement
}

window.onload=function() { // when page has loaded
  setTimeout(function() { 
    document.getElementById("somecontainer").innerHTML=concatIt();
  },10000); // insert after 10 seconds
}

【讨论】:

    【解决方案3】:

    你可以使用 -

    setTimeout(function() {
    
    document.getElementsByTagName('body')[0].appendChild('<script>document.write("hello")</script>');
    
    }, 5000);
    

    基于cmets-

    作为建议,您不应该在文档加载后添加这样的脚本。这是因为如果你使用'document.write('something')',它会删除文档中之前的内容,只在其中写入'something'

    【讨论】:

    • 这将彻底擦除文档
    • @mplungjan OP 想在一段时间后加载脚本,我告诉他该怎么做。如果 OP 想要加载擦除文档的内容,那么这应该是他/她自己关心的问题。也就是说,我不认为 - 如果 OP 通过其他方法加载相同的脚本,文档将被保留。此外,您应该更好地查看被问到的内容,然后对答案投反对票。
    • 请不要用“如果承认自己是菜鸟的 OP 想要自掘坟墓,就这样吧”为一个糟糕的建议辩护——你发布的内容并没有回答问题,因为它是除非OP想要DOS你。最后一句是什么意思?
    • @mplungjan 正如我所说,我只是回答了所问的问题。什么问题没有得到正确回答?最后陈述的意思 - 请仔细阅读问题并回答。同时,我更新了,因为我不希望 OP 挖自己的坟墓。什么是“DOS”?
    • 拒绝服务。例如让您的页面在浏览器中崩溃
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-07
    • 2012-07-29
    • 1970-01-01
    • 2020-04-28
    • 2018-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多