使用javascript如何克服ie版本的document.createElement(';script';).onload问题

使用javascript如何克服ie版本的document.createElement(';script';).onload问题,javascript,Javascript,这里我有一个问题。下面我动态创建脚本元素。。问题是ga.onload=function()无法在ie中工作。其他浏览器(如ff、chrome)工作正常。但我不能工作。代码是 var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = "../../script/jquery.hint.js"; ga.onload = function(){ some

这里我有一个问题。下面我动态创建脚本元素。。问题是ga.onload=function()无法在ie中工作。其他浏览器(如ff、chrome)工作正常。但我不能工作。代码是

var ga = document.createElement('script'); 
ga.type = 'text/javascript';
ga.async = true;
ga.src = "../../script/jquery.hint.js";
ga.onload = function(){
    some operation here;
};
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);

脚本标记上的onload事件可能工作,也可能不工作,具体取决于浏览器

若您使用的是jQuery,那个么就可以使用函数加载javascript文件并为其分配回调函数。当加载javascript代码时,将触发回调

如果您没有使用JavaScript框架,那么仍然可以使用上述代码在DOM中注入脚本标记。这应该适用于所有浏览器,但是没有防弹的方法来确定脚本实际加载的时间。onload可能工作,也可能不工作


从这一点上,您可以尝试每隔几秒钟“轮询”一个符号。这意味着您在注入脚本标记后每隔几秒钟使用函数执行一次轮询函数。在轮询函数中,您可以使用JavaScript操作符查看特定变量是否未定义(对于上面的示例,您将检查jQuery.fn.hint的类型是否未定义)。定义后,取消轮询功能并执行该操作。

脚本标记上的onload事件可能会工作,也可能不会工作,具体取决于浏览器

若您使用的是jQuery,那个么就可以使用函数加载javascript文件并为其分配回调函数。当加载javascript代码时,将触发回调

如果您没有使用JavaScript框架,那么仍然可以使用上述代码在DOM中注入脚本标记。这应该适用于所有浏览器,但是没有防弹的方法来确定脚本实际加载的时间。onload可能工作,也可能不工作


从这一点上,您可以尝试每隔几秒钟“轮询”一个符号。这意味着您在注入脚本标记后每隔几秒钟使用函数执行一次轮询函数。在轮询函数中,您可以使用JavaScript操作符查看特定变量是否未定义(对于上面的示例,您将检查jQuery.fn.hint的类型是否未定义)。定义后,取消轮询功能并执行该操作。

您可以使其适用于所有浏览器。问题是IE报告状态不可靠,它并不总是报告完整,有时它只是报告加载。下面的代码对我来说很好

runFun = "";

var newScript = document.createElement('script');

if(document.all){
    newScript.onreadystatechange = function() {
        if (newScript.readyState == 'complete') {
            newScript.onreadystatechange = "";
            runFun = new Function("alert('here');");
        }
        else if (newScript.readyState == 'loaded') {
            newScript.onreadystatechange = "";
            runFun = new Function("alert('here');");
        }
        runFun();
    }
}
else {
    // most browsers
    newScript.onload = function() {
        var runFun = new Function("alert('here');");
        runFun();
    }
}

您可以使其适用于所有浏览器。问题是IE报告状态不可靠,它并不总是报告完整,有时它只是报告加载。下面的代码对我来说很好

runFun = "";

var newScript = document.createElement('script');

if(document.all){
    newScript.onreadystatechange = function() {
        if (newScript.readyState == 'complete') {
            newScript.onreadystatechange = "";
            runFun = new Function("alert('here');");
        }
        else if (newScript.readyState == 'loaded') {
            newScript.onreadystatechange = "";
            runFun = new Function("alert('here');");
        }
        runFun();
    }
}
else {
    // most browsers
    newScript.onload = function() {
        var runFun = new Function("alert('here');");
        runFun();
    }
}

尝试将onload置于src之前。事实证明,我在IE7+中遇到的这种编程JS功能的很多问题都是由于程序员错误造成的,哈哈。当我以编程方式交换它们时,标签没有调用onload处理程序,这让我遇到了一个问题,它开始像我预期的那样神奇地工作#我失败了

尝试将onload置于src之前。事实证明,我在IE7+中遇到的这种编程JS功能的很多问题都是由于程序员错误造成的,哈哈。当我以编程方式交换它们时,标签没有调用onload处理程序,这让我遇到了一个问题,它开始像我预期的那样神奇地工作#我失败了