2011-06-13 114 views
1

我有一個使用JQuery Mobile的移動應用程序。由於黑莓問題,我需要選擇加載頁面時加載哪些JS文件。我這樣做的HTML頁面上像這樣:選擇加載哪個JS文件不會加載文件

<html> 
<head> 
<!-- Code --> 
<script type = "text/javascript" > 
//Check if phone is a blackberry 
if (navigator.userAgent == 'BlackBerry') { 
    //Load blackberry workaround 
    var ourJSFile = document.createElement('script'); 
    ourJSFile.setAttribute("type", "text/javascript"); 
    ourJSFile.setAttribute("src", "DefaultBBWorkaround.js"); 
    //Load Newest JQuery 
    var fileref = document.createElement('script'); 
    fileref.setAttribute("type", "text/javascript"); 
    fileref.setAttribute("src", "http://code.jquery.com/mobile/latest/jquery.mobile.min.js"); 
} else { 
alert("Started"); 
    //Load default 
    var ourJSFile = document.createElement('script'); 
    ourJSFile.setAttribute("type", "text/javascript"); 
    ourJSFile.setAttribute("src", "Default.js"); 
    //Load last stable version of JQuery 
    var fileref = document.createElement('script'); 
    fileref.setAttribute("type", "text/javascript"); 
    fileref.setAttribute("src", "jquery.mobile-1.0a4.1.js"); 
    alert("Done"); 
} 
</script> 
</head> 
<body> 
<!-- Code --> 
</body> 
</html> 

我打了兩個電話alert(),但文件不會被裝載(我在Firebug檢查爲好)。 有什麼我在這裏做錯了嗎?

另外我也想爲css做這個。我知道這樣做,我會做到這一點:

loadcss = document.createElement('link'); 
loadcss.setAttribute("rel", "stylesheet"); 
loadcss.setAttribute("type", "text/css"); 
loadcss.setAttribute("href", cssfile); 
document.getElementsByTagName("head")[0].appendChild(loadcss); 

我能做到的是,在同一<script>標籤,我加載JS?或者會導致問題?

回答

4

您需要以某種方式將生成的腳本元素附加到頁面中。

var head = document.getElementsByTagName('head')[0]; 
head.appendChild(ourJSFile); 
head.appendChild(fileref); 
1

黑莓檢查從不運行。

if (navigator.userAgent == 'BlackBerry') { 

...無效。試試這個:

if(/blackberry/i.test(navigator.userAgent) { 
    // ...rest of your blackberry code here... 

此外,由於您使用的是jQuery,所以您也可以輕鬆加載腳本。

$.getScript('my-script.js', function() { 
    // optional callback function on success 
});