在IE 10和其他浏览器中破解JS代码

时间:2013-12-17 07:24:45

标签: javascript internet-explorer parent-child internet-explorer-10 undefined-behavior

我的代码工作正常,直到IE 9版本。但在IE 10和Mozilla和Chrome中打破。

经过一些骚扰后,我发现这是由于JS中的问题无法正常工作。

以下是代码:

function FillAlbumList()
{
    var tagNameTest = ''AlbumTable'';
    var dsRoot = objXMLHTTP.responseXML.documentElement;
    var tagname = dsRoot.getElementsByTagName(tagNameTest);
    var optEquipment = dsRoot.getElementsByTagName("AlbumTable");
    var tblAlbumList = document.getElementById('tblAlbumList').getElementsByTagName("tbody")[0];
    var rows = tblAlbumList.rows.length;
    var tblID = document.getElementById('dlOptFeature').getElementsByTagName("tbody")[0];
    var optArray = new Array();

    if(tagname.context.childNodes(0) != null)
    {
        gTotalAlbumCount = tagname.context.childNodes(0).parentNode.childNodes.length;
        // find the first album ID from list of Albums
        fstID = dsRoot.getElementsByTagName("fstAlbumID").context.childNodes(0).childNodes(1).text;
        // find the first album name from list of Albums
        fstName = dsRoot.getElementsByTagName("fstAlbumName").context.childNodes(0).childNodes(0).text;
        // loop through each node from XML object and populate value inside the table.
        for(var i=0;i<tagname.context.childNodes(0).parentNode.childNodes.length;i++)
        {
            if (tagname.context.childNodes(i).tagName == "AlbumTable")

=========================

此处dsRoot是:

<Album>

<AlbumTable>
<AlbumName>1B0EE6DBB8FE_18-20-25</AlbumName>
<AlbumId>3</AlbumId>
<UploadedDate>12/3/2013 6:20:48PM</UploadedDate>
<TotalImages>10</TotalImages>
<RemainingImages>10</RemainingImages>
</AlbumTable>

<AlbumTable>
<AlbumName>1B0EE6DBB8FE_18-01-32</AlbumName>
<AlbumId>2</AlbumId>
<UploadedDate>12/3/2013 6:02:01 PM</UploadedDate>
<TotalImages>10</TotalImages>
<RemainingImages>10</RemainingImages>
</AlbumTable>

<fstAlbumID>3</fstAlbumID>
<fstAlbumName>1B0EE6DBB8FE_18-20-25</fstAlbumName>

</Album>

=========================

代码在以下之后破裂:

tagname.context.childNodes(0) =&gt; tagname.context未定义。

我将其更改为:tagname(0),它在IE 10中有效,但它在IE8中无效。

任何建议如何在此处进行更改以使其在任何地方都能正常工作。

1 个答案:

答案 0 :(得分:0)

使用条件编译来定位ie10并使用适用于ie10的代码。使用以前的代码10以下。不知道这对gecko和webkit有何帮助...

@cc condional汇编参考:http://msdn.microsoft.com/en-us/library/ie/8ka90k2e(v=vs.94).aspx