Javascript:在移动设备上使用DOMParser(iOS 7.*)

bra*_*r19 6 javascript mobile-safari domparser ios angularjs

我在我的项目中使用角度.但没关系)

我必须使用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;
Run Code Online (Sandbox Code Playgroud)

如果我删除此代码 - 应用程序正常工作,但与DOMParser似乎它引起了错误...

Jam*_*mes 3

某些浏览器不支持此功能。为了修补这个问题,我们可以使用以下 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));
Run Code Online (Sandbox Code Playgroud)

上面的脚本是从 mozilla 的网站上提取的。