我有一个使用JQuery Mobile的移动应用程序。由于黑莓的问题,我需要选择在加载页面时加载哪些JS文件。我在html页面上这样做:
<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);
我可以在加载JS的<script>
标记中执行此操作吗?或者会导致问题吗?
答案 0 :(得分:4)
您需要以某种方式将生成的脚本元素附加到页面。
var head = document.getElementsByTagName('head')[0];
head.appendChild(ourJSFile);
head.appendChild(fileref);
答案 1 :(得分: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
});