obe*_*iro 11 javascript extjs internet-explorer-9
我在IE9上使用ExtJs ..我几乎总是得到这个错误..
Microsoft JScript运行时错误:
Object不支持属性或方法'createContextualFragment'
这意味着什么剂量?需要什么'createContextualFragment'?以及如何解决这个问题?
Tim*_*own 25
createContextualFragment()是一种Range从HTML字符串创建文档片段的对象方法.它存在于Firefox和WebKit和Opera中但目前是非标准的(它不在DOM Level 2 Range规范中,但在正在进行的DOM解析和序列化规范中)并且IE 9没有实现它,这是符合微软在IE 9中实现标准功能的一般方法,这在以前是IE中缺失的.ExtJs必须使用这种方法,虽然相当愚蠢,因为它是非标准的,并且可以很容易地实现相同的结果innerHTML,这在任何地方都得到支持.
UPDATE
您可以将以下内容修补到IE 9,因为它允许扩展主机对象原型,而以前的版本没有.以下是createContextualFragment()改编自我的Rangy库的天真实现,但适用于大多数用途.有关详细信息和更全面的实施,请参阅此Rangy问题.
请注意,这在IE <9中不起作用,因为这些浏览器没有DOM Range实现.
if (typeof Range.prototype.createContextualFragment == "undefined") {
Range.prototype.createContextualFragment = function(html) {
var startNode = this.startContainer;
var doc = startNode.nodeType == 9 ? startNode : startNode.ownerDocument;
var container = doc.createElement("div");
container.innerHTML = html;
var frag = doc.createDocumentFragment(), n;
while ( (n = container.firstChild) ) {
frag.appendChild(n);
}
return frag;
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22815 次 |
| 最近记录: |