1
我正在使用僅限IE6的內部舊版網站。由於使用了特定腳本,因此IE8/9失敗。目標是修改網站在IE9上可見。其他瀏覽器不是一個問題。使用IE9更新XML數據島
有成千上萬的100+ JS文件,網頁和向上,所以在這裏的其他目標不是重新寫的一切,但要解決什麼,我們可以啓用IE9網站。
我不完全知道我在正確的這樣做,但下面是一個典型的頁面佈局的一個例子。我已經將它濃縮爲一個小測試來演示什麼在工作,什麼不工作。
作品
- 初始結合XML數據島。
- 當一個XML元素被更新時,相同的XML元素別處的頁面(修改兩個輸入字段和其它輸入字段中的一個的值將跟隨套件時,它失去焦點)上被更新。
不工作
- 一個值之後檢索XML數據島的價值觀已經改變了(至少我是如何未遂)。
- 保持綁定到XML數據島的字段與嵌入式XML保持同步。
步驟來重現問題
- (OK)點擊視圖消息按鈕,並從嵌入XML值被正確顯示。
- (ok)在其中一個輸入字段中更改值;另一個正確更新。
- (不正常)再次點擊視圖消息按鈕;消息的新值不是已更新。
- (1/2 OK)單擊修改消息按鈕和XML被更新;但綁定到XML數據島的輸入字段不會更新。
- (ok)再次點擊查看消息按鈕;正確顯示更新XML值的腳本。
樣品
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Data Islands</title>
<xml id="ResultsIsland">
<result>
<msg>Initial Message</msg>
</result>
</xml>
<script type="text/javascript">
function modifyDataIsland() {
var dataIsland = document.getElementById("ResultsIsland");
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(dataIsland.innerHTML);
var xmlRoot = xmlDoc.documentElement;
xmlRoot.getElementsByTagName("msg")[0].text = new Date();
dataIsland.innerHTML = xmlDoc.xml;
alert("msg element updated to: " + xmlRoot.getElementsByTagName("msg")[0].text);
}
function viewMessage() {
var d = document.getElementById("Message");
var dataIsland = document.getElementById("ResultsIsland");
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.loadXML(dataIsland.innerHTML);
d.innerHTML = xmlDoc.getElementsByTagName("msg")[0].text;
}
</script>
</head>
<body style="margin: 100px;">
<div style="margin: 10px;">
<button onclick="viewMessage();">view message</button>
message is: <span id="Message"/>
</div>
<table datasrc="#ResultsIsland" style="margin: 10px;">
<tr>
<td>
message: <input type="text" datafld="msg" />
</td>
</tr>
</table>
<table datasrc="#ResultsIsland" style="margin: 10px;">
<tr>
<td>
message: <input type="text" datafld="msg" />
</td>
</tr>
</table>
<div style="margin: 10px;">
<button onclick="modifyDataIsland();">modify message</button>
</div>
</body>
</html>
問題:是否可以這樣修改反映在兩個嵌入式XML和綁定的數據字段更新IE9的XML數據島?
是否與IE8的工作? – 2012-07-19 16:00:43
我不確定。我沒有IE8來測試。它適用於我在IE9中的所有初始測試。我會懷疑IE8是類似的,因爲你不得不強迫它進入怪癖模式。 (假設有一個IE8怪癖模式)。 – 2012-07-19 16:25:42
它可能更安全使用 <!DOCTYPE HTML PUBLIC> - // W3C // DTD HTML 4.0 Transitional // EN「> 要強制使用怪異模式而不是<!DOCTYPE HTML>,因爲現代瀏覽器會在HTML5中渲染它。在處理XML數據島填充時,我們遇到類似的問題 – TheRealVayne 2015-04-16 03:59:46