2011-01-24 4 views
3

私はblackberry9300(5.0.0.832)です。そして私はプログラムでjavascript要素を追加しようとしています。 Blackberryブラウザでscript要素を動的に追加する方法は?

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)上のblackberryブラウザは、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); 
}

関連する問題