【问题标题】:Javascript: usage of DOMParser on mobile devices (iOS 7.*)Javascript:在移动设备上使用 DOMParser (iOS 7.*)
【发布时间】:2015-11-02 07:04:29
【问题描述】:

我在我的项目中使用 Angular。不过没关系)

我必须使用 DOMParser 来检查和编辑一个字段中的一些数据 (.Content)

一切都很好...我带着安装了 iOS 7 的 iPad 3 并感到惊讶...

为什么DOMParser 不适用于 iOS 7(但适用于 iOS 8+)?

如何在 iOS 7 上解决此问题?也许有一些解决方法?

这是我的代码的一部分:

var parser = new DOMParser();
var doc = parser.parseFromString('<div id="fetchContent">' + $scope.news.Content + '</div>', "text/html");
...
$scope.news.Content = doc.getElementById('fetchContent').innerHTML;

如果我删除此代码 - 应用程序正常工作,但使用 DOMParser 似乎会引发错误...

【问题讨论】:

  • 您能否更具体地说明它会引发什么样的错误?
  • @JavaAnto 我怎么知道?它使用 domparser 中断功能...
  • 如果 DOMParser 是问题所在,那么还有另一种方法可以解决这个问题。您可以将 html 附加到页面正文中并获取子节点,如下所示:var div = document.createElement('div'); div.innerHTML = 'some html'; var result = div.childNodes;
  • 这里给出了详细的解释:stackoverflow.com/a/10585079/2110188
  • 另外,您如何测试应用程序?在 iOS 中使用 Safari 浏览器?

标签: javascript ios angularjs mobile-safari domparser


【解决方案1】:

某些浏览器不支持此功能。为了解决这个问题,我们可以使用以下 javascript 代码:

* inspired by https://gist.github.com/1129031 */
/*global document, DOMParser*/

(function(DOMParser) {
    "use strict";

    var
      proto = DOMParser.prototype
    , nativeParse = proto.parseFromString
    ;

    // Firefox/Opera/IE throw errors on unsupported types
    try {
        // WebKit returns null on unsupported types
        if ((new DOMParser()).parseFromString("", "text/html")) {
            // text/html parsing is natively supported
            return;
        }
    } catch (ex) {}

    proto.parseFromString = function(markup, type) {
        if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
            var
              doc = document.implementation.createHTMLDocument("")
            ;
                if (markup.toLowerCase().indexOf('<!doctype') > -1) {
                    doc.documentElement.innerHTML = markup;
                }
                else {
                    doc.body.innerHTML = markup;
                }
            return doc;
        } else {
            return nativeParse.apply(this, arguments);
        }
    };
}(DOMParser));

以上脚本摘自 mozilla 的网站here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多