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

时间:2015-11-02 07:04:30

标签: javascript ios angularjs mobile-safari domparser

我在项目中使用角度。但这没关系)

我必须使用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似乎引发了错误......

1 个答案:

答案 0 :(得分: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));

以上脚本摘自mozilla的网站here