Javascript:Firefox中的Onload事件未触发

时间:2011-03-25 00:59:39

标签: firefox dynamic asynchronous

我正在进行动态脚本调用,以在window的onload事件之前加载一些extenal JS。这是示例代码。

var temp = document.createElement('script');
temp.type = 'text/javascript';
temp.async = temp.defer= true;
temp.src = "http://stevesouders.com/efws/iframe-empty.php?t==";
window.setTimeout(function(){document.getElementsByTagName('head')[0].appendChild(temp)},0);

此代码完全适用于IE(Window onload事件不等待动态脚本资源下载)。但它不适用于Firefox。 Window onload事件正在等待动态脚本资源下载。

此问题是否有任何变通方法。您可以使用http://nidhisekhar.com/samples/async_script_call_settimeout.html链接查看IE和Firefox上的行为。感谢您的帮助。

谢谢, 拉加

1 个答案:

答案 0 :(得分:0)

试试这个JavaScript函数:

// Adds script tag to head of the page
function addScriptToHead(source, code, type) {
    var script = document.createElement('script');
    if (type === 'js') {
        script.setAttribute('type', 'text/javascript');
    }
    if (source !== '') {
        script.setAttribute('src', source);
    }
    if (code !== '') {
        if (document.all && !window.opera)  {
            script.text = code;
        } else {
            script.innerHTML = code;
        }
    }
    document.getElementsByTagName('head')[0].appendChild(script);
}

呼叫示例:

addScriptToHead(path,'','js');