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它提高连接错误...
答
某些浏览器不支持这个功能。为了修补这个,我们可以使用下面的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提取。
你能更具体地指出它会抛出什么样的错误吗? – James
@JavaAnto我怎么知道它? 它破坏功能与domparser ... – brabertaser19
如果DOMParser是问题,还有另一种方法来解决这个问题。您可以将html附加到页面的主体中,并获取如下所示的子节点:var div = document.createElement('div'); div.innerHTML ='some html'; var result = div.childNodes;' – James