gpt4 book ai didi

javascript - IE10 Extjs 4.1.0 insert Sibling 不能正常工作

转载 作者:行者123 更新时间:2023-11-29 10:41:54 25 4
gpt4 key购买 nike

我有一段代码:

        var messageWrapper = {
tag: 'div'
};

var messageEl = cmp.errorEl.insertSibling(messageWrapper, "after");
cmp.messageEl = messageEl;

Ext.Array.each(me.displayProperties, function (property) {
var propertyConfig = {
tag: 'div',
style: {
display: 'none'
}
};
var newElement = messageEl.insertSibling(propertyConfig, "after");
newElement.addCls(property.classes);

var changeListener = me.buildChangeListener(newElement, property.name);
cmp.addListener('change', changeListener);
});

过去在 ExtJs 4.0.7 下工作正常,在 chrome 下仍然工作正常。

问题是 cmp.errorEl.insertSibling(messageWrapper, "after") 在 IE 下返回 null,我可以添加额外的 true 参数 - 然后我会收到 dom 对象,但我不会能够使用 extjs 功能。

你知道我该如何解决它吗?

fiddle 位于:https://fiddle.sencha.com/#fiddle/f1a

最佳答案

ExtJS 4.1.0框架的Ext.dom.Helper(ietable方法)存在bug。应用此覆盖来修复它:

(function() {

// kill repeat to save bytes
var detachedDiv = document.createElement('div');

Ext.define('Ext.override.dom.Helper', {
override: 'Ext.dom.AbstractHelper',

ieTable: function(depth, openingTags, htmlContent, closingTags){
detachedDiv.innerHTML = [openingTags, htmlContent, closingTags].join('');

var i = -1,
el = detachedDiv,
ns;
while (++i < depth) {
el = el.firstChild;
}
// If the result is multiple siblings, then encapsulate them into one fragment.
ns = el.nextSibling;

if (ns) {
el = document.createDocumentFragment();
while (ns) {
el.appendChild(ns);
ns = ns.nextSibling;
}
}
return el;
}

}, function() {
Ext.ns('Ext.core');
Ext.DomHelper = Ext.core.DomHelper = new this;
});

}());

fiddle :https://fiddle.sencha.com/#fiddle/f1v

关于javascript - IE10 Extjs 4.1.0 insert Sibling 不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27447310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com