惟此独立之精神,自由之思想,历千万纪与天壤而同久,共三光而永光
FireFox和IE浏览器的Javascript脚本兼容问题收集之二
上一篇 /
下一篇 2009-11-03 11:44:53
/ 個人分類:软件技术
<response>
<input>
<![CDATA[A
customer enters a card. If it is not valid then SimpleMat rejects the
card.]]>
</input>
<tree
style=”penn”>….
功能描述:
上图的XML结构是由页面返回的document。在此处需要将CDATA中的text取出。
处理思路:
1、 首先获取<input> ….</input>节点对象。
var inputElement = doc.getElementsByTagName("input");
2、 获取其中的数据。由于使用getElementsByTagName()方法获取的是一个数组对象,doc中所有的input标签对象,顺序的列在这个数组中,例如:inputElement[0]
,inputElement[1],….,inputElement[x]。因为我们这个doc中只有一个<input>,我们也只需要这个<input>,所以我们这个时候需要使用item(0)来定位到第一个<input>标签上。然后以childNodes获取该<input>的子节点,找到我们所要的节点后,返回text。
inputValue = inputElement.item(0).childNodes[0].text;
注意兼容性问题:
1、 IE中inputValue =
inputElement.item(0).childNodes[0].text;而FireFox需要使用inputValue = inputElement.item(0).childNodes[1].textContent;。他们返回的内容其实是一样的,原因:FireFox对XML解析时认为<input>和<![DATA[之间还有一个对象text,那个对象才是第一个对象childNode[0],所以按顺序排列,我们需要得到的那个数据<![CDATA就成了childNodes[1]。所以当发现用户使用FireFox浏览器时,一定要inputValue =
inputElement.item(0).childNodes[1].textContent;才对。
2、 text和textContent IE使用text或者innerText就可以取回一个XML的内容域,而firxfox一定要使用textContent才行。
if (isBeforeIE7() == true || isIE8() ==
true)
{
selectedParser=document.getElementById("stanfordparser")[document.getElementById("stanfordparser").selectedIndex].text;
var
inputElement = doc.getElementsByTagName("input");
inputValue
= inputElement.item(0).childNodes[0].text;
}
else
{
selectedParser=document.getElementById("stanfordparser")[document.getElementById("stanfordparser").selectedIndex].textContent;
var
inputElement = doc.getElementsByTagName("input");
inputValue
= inputElement.item(0).childNodes[1].textContent;
}
導入論壇
引用鏈接
收藏
分享給好友
推薦到圈子
管理
舉報
TAG: