1

我正在使用以下 JavaScript 代码,并试图在文件下载并添加到我的页面标题后找出:

function loadjscssfile(filename, filetype)
{
    if (filetype=="js"){ //if filename is a external JavaScript file
        var fileref=document.createElement('script')
            fileref.setAttribute("type","text/javascript")
            fileref.setAttribute("src", filename)
    }
    else if (filetype=="css"){ //if filename is an external CSS file
        var fileref=document.createElement("link")
            fileref.setAttribute("rel", "stylesheet")
            fileref.setAttribute("type", "text/css")
            fileref.setAttribute("href", filename)
    }
    if (typeof fileref!="undefined")
        document.getElementsByTagName("head")[0].appendChild(fileref)
}



loadjscssfile("jquery.js","js");

我通常使用以下代码来查找我的图像加载后:

    document.getElementById("header_logo").src = "logo.png"; // load top logo

var header_logo = document.getElementById("header_logo"); 
    header_logo.onload = function(e) {  
    // do something here, the file has loaded
}

但我无法弄清楚如何在我的 JS 加载后检查..

有任何想法吗?

(我不能使用 jQuery。)

4

2 回答 2

1

您可以向onload事件添加一个函数:

function loadjscssfile(filename, filetype, onload) {
    //if filename is a external JavaScript file
    if (filetype == "js") { 
        var fileref = document.createElement('script');
        fileref.type = "text/javascript");
        fileref.onload = onload;
        fileref.src = filename);
        document.getElementsByTagName("head")[0].appendChild(fileref);
        return;
    }

    //if filename is an external CSS file
    if (filetype == "css") { 
        var fileref = document.createElement("link");
        fileref.rel = "stylesheet";
        fileref.type = "text/css";
        fileref.onload = onload;
        fileref.href = filename;
        document.getElementsByTagName("head")[0].appendChild(fileref);
        return;
    }
}



loadjscssfile("jquery.js","js", function() { alert(this.src); });
于 2012-07-30T04:07:49.720 回答
0

在 HTML 4.01 中,只有bodyframeset元素支持 load 事件,尽管许多支持 img 元素和一些 script 元素。

在 HTML5 中,脚本元素具有beforescriptexecuteafterscriptexecuteload事件,这些事件在脚本元素生命周期的相关时间分派。然而,对这些事件的支持可能在许多正在使用的浏览器中不可用,因此不值得依赖。

查看脚本是否已加载的最可靠方法是测试一个变量的值,该变量由要执行的最后一位代码分配一个值,例如最终语句,如:

var loadedScripts = loadedScripts || {};
loadedScripts.fooScript = true;

然后你可以测试它:

if (loadedScripts.fooScript) {
  // loaded

} else {
  // not loaded
}
于 2012-07-30T06:17:51.203 回答