2011-01-24 75 views
3

我在黑莓9300(5.0.0.832)上。我试图以编程方式添加一个JavaScript元素。 如何在Blackberry浏览器上动态添加脚本元素?

var script=document.createElement('script'); 
script.src='file.js'; 
script.type='text/javascript'; 
script.onload=function(){alert('loaded');}; //Nothing happens 
script.addEventListener('load', function(){alert('loaded');}, false); //Nothing happens 
script.addEventListener('readystatechange', function(){alert('state changed');}, false); //Nothing happens 
script.onreadystatechange=function(){alert('state changed')}; //Nothing happens 
document.getElementsByTagName('head').item(0).appendChild(script);
有什么办法可以解决这个问题吗?

回答

3

旧OS上的黑莓浏览器(< 6.0)不会触发onload事件或不会更改脚本的readyState。所以我需要查询js文件是否成功加载。如果有人感兴趣,这是这个功能。

function loadScript(path,callback,chkvar){ 
    var a=document.createElement('script'); 
    a.src=path; 
    a.type='text/javascript'; 
    a.onreadystatechange=function(){ 
    if(this.readyState=='complete'||this.readyState=='loaded') 
     callback(); 
    }; 
    a.onload=callback; 
    if(a.hasOwnProperty('onload')==false) 
    var e=setInterval(function(){ 
     if(eval(chkvar)){ //chkvar will only be available after js file is loaded. 
     clearInterval(e); 
     callback(); 
     } 
    },50); 
    } 
    document.getElementsByTagName('head').item(0).appendChild(a); 
}

相关问题