我最近继承了一个巨大的 Web 应用程序,它是 JSP、Javascript 和 Java 的组合。它仅适用于 IE,因为它使用 xml 数据岛和其他阻止在其他浏览器上顺利运行的东西进行编码的方式。一切都很好,直到几天后,一些用户推出了 Windows 7 机器,其中 IE9/10 在应用程序中的一些 javascript 出现问题。例如,以下数据岛是我的 html 页面中的一个片段。
<xml id = "underlyingdata" ondatasetcomplete="window.dialogArguments.parent.repopulateDropDown(this, underlyingdd)">
</xml>
<xml id="termdata" ondatasetcomplete="window.dialogArguments.parent.repopulateDropDown(this, termdd)">
</xml>
在此页面上还有另一行代码
window.dialogArguments.parent.request(underlyingdata, "CONTRACT.LIST.WB", "PULP AND PAPER|" + instrumentdd.options[instrumentdd.selectedIndex].text);
调用如下函数
function request(xmldataisland, requestmethod, parameters
{
var screwcache=Math.round(Math.random()*10000);
xmldataisland.value=null;
xmldataisland.load("/webaccess/Request?sessionid=" + sessionid + "&request=" + requestmethod + "¶meters=" + parameters+"&screwcache="+screwcache);
}
这在 IE9/10 中失败,错误是“加载”不是“xmldataisland”对象上的有效方法(脚本 438 错误),而它在 IE 5 到 IE 8 上运行良好。
我相信上述函数中的 xmldataisland 对象属于 XMLDocument 类型。为什么加载方法失败?解决方法是什么?我从许多来源读到并听到,使用数据孤岛是一个糟糕的主意。在这种情况下,正确的选择是什么?