背景
我正在研究一個項目,該項目在資源有限的小型設備的嵌入式Web瀏覽器中運行。瀏覽器本身有點過時並且其功能有限(HTML 4.01†,W3C DOM Level 2†,JavaScript 1.4)。我沒有關於瀏覽器的文檔,所以我所知道的是來自試驗和錯誤。創建動態JavaScript的替代方法?
重點是從服務器檢索動態內容,以便只需要將最少量的不靈活代碼嵌入到運行Web瀏覽器的設備中。瀏覽器不支持XMLHTTPRequest對象,所以AJAX沒有了。與我一起工作,我寫了一些測試代碼來動態插入JavaScript。
†這些標準不支持
編輯 雖然我不能實際確認的話,我相信this site可以列出了嵌入式瀏覽器的DOM支持,因爲我看「的Mozilla/4.0(兼容小部分; EBSWebC 2.6; Windows NT 5.1)「作爲服務器日誌中的用戶代理。
<html>
<head>
</head>
<body onload="init()">
<div id="root"></div>
<script type="text/javascript">
<!--
function init() {
// Add a div element to the page.
var div = document.createElement("div");
div.id = "testDiv";
document.getElementById("root").appendChild(div);
// Set a timeout to insert the JavaScript after 2 seconds.
setTimeout("dynamicJS()", 2000);
}
function dynamicJS() {
...
}
//-->
</script>
</body>
</html>
方法1
我最初實現使用方法1的dynamicJS
功能,發現同時代碼按預期執行在Chrome,IE8和Firefox 3.5時,JavaScript實際上沒有由所檢索的嵌入式瀏覽器,當元素被追加時。
function dynamicJS() {
var js = document.createElement("script");
js.type = "text/javascript";
js.src = "js/test.js";
document.getElementById("root").appendChild(js);
}
方法2
尋找周圍的工作,我實現方法2。該方法實際上在嵌入式瀏覽器中工作,因爲JavaScript被檢索和執行,但在我測試的其他現代Web瀏覽器(Chrome,IE8,FireFox 3.5)中無法正常工作。
function dynamicJS() {
var js= '<script type="text/javascript" src="js/test.js"> </s' + 'cript>';
document.getElementById("testDiv").innerHTML = js;
}
問題
我是新來的JavaScript和一般的網絡編程,所以我希望專家們的一個(或多個)在這裏可以提供一些線索這對我來說。
方法2是否在技術上有問題?如果沒有,爲什麼它在現代Web瀏覽器中不起作用?
這可能不是這樣,但是如果瀏覽器沒有解析腳本標記,如果它裏面沒有內容,那麼過去我遇到了一些問題。當我將它包含在頁面中時,我會在腳本標記內放置一個「空格」。也許用method1,你可以設置js.innerText ='';或在Method2中,在腳本標記之間添加一個空格。 – 2009-12-17 19:58:59