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

问题描述:

我在我的项目中使用了angular。不过,这并不重要)Javascript:在移动设备上使用DOMParser(iOS 7. *)

我必须使用的DOMParser在一个场(.Content

,一切都OK了...我花了iPad 3的与安装的iOS 7,并惊讶于检查和编辑一些数据...

为什么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它提高连接错误...

+0

你能更具体地指出它会抛出什么样的错误吗? – James

+0

@JavaAnto我怎么知道它? 它破坏功能与domparser ... – brabertaser19

+0

如果DOMParser是问题,还有另一种方法来解决这个问题。您可以将html附加到页面的主体中,并获取如下所示的子节点:var div = document.createElement('div'); div.innerHTML ='some html'; var result = div.childNodes;' – James

某些浏览器不支持这个功能。为了修补这个,我们可以使用下面的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提取。