【问题标题】:Alternatives for jQuery .html() method?jQuery .html() 方法的替代方案?
【发布时间】:2014-10-05 11:49:36
【问题描述】:

我目前正在使用 phonegap 开发单页应用程序。我想要实现的是最初解析一个 xml 文件并存储内容以供进一步使用。

目前一切正常,但有一个主要问题:

在我的 xml 文件中有一个包含 html 格式文本内容的标签。例如:

<textfield> <h1>Title</h1> Content </textfield>

我目前所做的是通过 jQuery ajax 调用加载我的 xml 文件,然后使用 html() 方法检索我的文本字段 html:

this.description = $(Obj).find("textfield").html();

在 Google Chrome、Firefox 和 Android 上,这可以正常工作。 html 被存储,以后可以附加到我的对象中。然而,在 Safari 和 Iphone 设备上,html() 不起作用。现在我正在寻找一种解决方法。我当然不想使用 text() 因为我的格式将被忽略。

编辑:我的 ajax 调用:

$.ajax({
    type: "GET",
    url: Controller.baseURL+"/"+name+".xml",
    async: false,
    timeout:3000,
    dataType: "xml",
    success: function (data) {
        alert("succ");
        xml = data;
    },
     error: function () {
        alert('error!');
    }
});

也许有人可以帮助我。

提前致谢

【问题讨论】:

    标签: javascript jquery cordova


    【解决方案1】:
    var parser = new DOMParser();
    var parsed = parser.parseFromString(yourXMLStringLoadedViaAjax, 'text/xml');
    var textfieldConetent = parsed.querySelector('textfield').innerHTML;
    

    【讨论】:

    • 它似乎对我不起作用。如果您查看我的 ajax 调用,我的 xml 对象已经是一个 dom 元素。现在,如果我在做 alert(xml.querySelector('textfield').innerHTML);它包含 Chrome 和 Firefox 上的内容,但在 Safari 上未定义。
    • 嘿,@Dede1989。能否请您检查parsed.querySelector('textfield').innerHTML; 与其他节点,而不是textfield
    【解决方案2】:

    经过几个小时的搜索,我终于在这里找到了答案:

    https://stackoverflow.com/a/25789924/3566334

    好像

    在 IE 9、10 和 11、Safari 7.0 和 Opera 12 中,doc 中的节点既没有 innerHTML 字段也没有 xml 字段

    我听从了使用XML Serializer 的建议,它就像一个魅力!

    【讨论】:

      猜你喜欢
      • 2012-04-09
      • 1970-01-01
      • 2011-11-18
      • 2013-12-22
      • 1970-01-01
      • 2011-07-11
      • 2013-01-29
      • 1970-01-01
      • 2014-08-25
      相关资源
      最近更新 更多