【问题标题】:Javascript innerHTML LoadJavascript innerHTML 加载
【发布时间】:2025-12-31 09:10:12
【问题描述】:

我有以下代码:

window.document.getElementById("bufferTopic").innerHTML = "<img src='einstein/einstein.png' width='800' height='600'><script type='text/javascript' language='javascript'>alert('test');</script>"

我把它放在一个脚本文件中。这个想法是在一个 div 中缓存一些图像,并在它完成时运行一个脚本。

但它不起作用。

关于它为什么不工作的任何 cmets?

谢谢。

编辑:脚本可以正常加载图像。

【问题讨论】:

    标签: html innerhtml preload


    【解决方案1】:

    在页面加载后,您正在将 javascript 注入页面。

    它不会仅仅因为它现在在页面上而执行。

    您可以阅读有关 javascript 执行模型的信息here

    不知道为什么你不能简单地写出你的javascript插入图片:

    window.document.getElementById("bufferTopic").innerHTML = "<img src='einstein/einstein.png' width='800' height='600'>";
    alert('test');
    

    【讨论】:

    • 但是图像还没有被追踪。 innerHTML 定义了它。
    • @iEisenhower - 与此无关。 Javascript 按顺序在页面中运行。所有脚本将首先加载,然后运行。任何新注入的 javascript 都不会被拾取。
    • 是的,我的脚本在访问网页时被加载/缓存。抱歉有点新。
    • @iEisenhower - 为什么你认为缓存与此有关。顺便说一句 - 请参阅我的更新答案。
    【解决方案2】:

    您遇到的问题与您注入 javascript 的方式有关。以下是你应该如何做到这一点的一个很好的总结:

    http://ntt.cc/2008/02/10/4-ways-to-dynamically-load-external-javascriptwith-source.html

    希望这会有所帮助。

    鲍勃

    【讨论】:

    • 你链接的文章描述了如何添加链接的JS文件,而不是如何注入JS code立即执行。
    【解决方案3】:

    确保您的脚本出现在您的bufferTopic 元素的html 之后。或者,在window.onLoad 中执行。

    另外,easier way to preload images 是纯 javascript:

    var image = new Image();
    image.src = 'einstein/einstein.png';
    

    【讨论】: