我正在处理的应用程序,目前使用XML dataisland文件来检索下拉数据。下面是定义文件的代码。
<xml id="DefaultDataIslands" src="../XMLData/DataIslands-<%=((User.Identity).Database)%>.xml">
</xml>
以下是使用这些XML数据区的示例代码。
var oDataIsland = document.getElementById("DefaultDataIslands");
var oXmlNodes = oDataIsland.XMLDocument.selectNodes("XMLDataIslands/DataIsland[@ID='DIMRGroup']/Option");
此oDataIsland行在应用程序中总共使用了大约4k倍。应用程序本身就是Intranet,因此,我甚至可以要求用户直接下载xml文件。整点是将所需的更改保持为最小,同时删除所有XML标记的痕迹。我希望确保该应用程序在Chrome完成后可以在Chrome上运行。
我在这里检查了mozilla关于数据区的链接。 https://developer.mozilla.org/en/docs/Using_XML_Data_Islands_in_Mozilla
以下是基于该mozilla链接的代码。
var doc = document.getElementById(strDataSource).contentDocument;
var mainNode = doc.getElementsByTagName("DataIsland");
var oXmlNodes;
var strOptions = "";
//finds the selected node based on the id, and gets the options for that id
for (i = 0; i < mainNode.length; i++) {
if (mainNode[i].getAttributeNode("ID").nodeValue == strDataMember) {
oXmlNodes = mainNode[i].getElementsByTagName("Option");
}
}
此代码正确读取数据,在IE中完美运行(标准模式为10,没有怪癖),在完整解决方案中很容易做到改变。
唯一的问题是,document.getElementById(strDataSource).contentDocument;
行在Chrome中失败了。这与Mozilla文档中提到的内容相同。但是某种方式contentDocument
属性在chrome上未定义。
所以,我还需要一些关于如何解决这个问题的建议。我尝试了其他方法,使用HTTPRequest(每页请求太多),使用JSON(需要完全更改现有方法),使用后端处理XML而不是客户端(需要架构更改)。直到现在,所有这些想法都失败了。
我可以使用其他任何方法吗?或者我应该解决contentDocument
问题吗?
答案 0 :(得分:0)
要在Chrome中允许contentDocument
,您必须使用--allow-file-access-from-files
。以下是执行此操作的步骤: