2011-01-24 45 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); 
}