【问题标题】:Javascript: XML getElementsByTagName in Safari not return elementsJavascript:Safari 中的 XML getElementsByTagName 不返回元素
【发布时间】:2015-10-05 07:38:39
【问题描述】:

这是我的 XML 的一部分:

<TextLine Version="2" objectID="3" persistentID="6">
    <BaseProperties Version="5">
        <txBase>665.249</txBase>
        <XPos>221.205</XPos>
        <angle>0</angle>
        <verticalText>false</verticalText>
        <objectLeading>0</objectLeading>
    </BaseProperties>
    <EnclosingObjectType>block</EnclosingObjectType>
    <Alignment>center</Alignment>
    <TRString>xfsadxzcsdf</TRString>
    <RunLengthEncodedCharacterAttributes>
        <CharacterAttributes RunCount="13" StyleRef="4098" TextRef="4096" TXKerning="0" TXPostKerning="0" BaselineShifting="0" />
    </RunLengthEncodedCharacterAttributes>
    <tagName></tagName>
</TextLine>

例如我把它放在xmlString,在Safari中:

var parser = new DOMParser();
var xmlObject = parser.parseFromString(xmlString, 'text/xml');
console.log(xmlObject.getElementsByTagName('TRString')[0].innerHTML);

返回错误:TypeError: undefined is not an object

我试过的:

console.log(xmlObject.getElementsByTagName('TRString')[0]); 

它给你的不是#element,而是string。在这个例子中应该是:

<TRString>xfsadxzcsdf</TRString>

我在 Chrome 中没有这个问题。我知道这并不难解决。但我想知道谁更标准?

【问题讨论】:

    标签: javascript xml safari


    【解决方案1】:

    Safari 中的textContent 对您有用吗?

    如果是这样,当innerHTML 不可用时,您可以使用textContent...

    var xmlValue = xmlObject.getElementsByTagName('TRString')[0].innerHTML ||
                   xmlObject.getElementsByTagName('TRString')[0].textContent;
    

    【讨论】:

    • 是的。但我的问题是哪一个更标准? innerHTML 很常见。我担心它不标准。
    • 编辑有帮助吗?更多选择也可以参考quirksmode.org
    • 谢谢,它很有帮助。我知道这很容易解决,但我也希望我的代码是可维护的。所以我希望知道一个标准的写法。对不起,我有点强迫症。
    • 这几乎是标准的,除非您使用库。某些东西在某些浏览器中可用。我的困惑在于html 部分。当我使用xml 时,我使用 --> node.text || node.textContent...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    • 2011-05-26
    • 1970-01-01
    • 2021-10-13
    • 2021-10-02
    • 2012-04-06
    • 1970-01-01
    相关资源
    最近更新 更多