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