ExtJs实践(2)——ExtJs在IE下存在的一个bug
2011-01-06 15:34
183 查看
今天在使用ExtJs的时候,发现在IE下存在一个问题,不知道是不是Extjs本身的Bug。如果在一个页面上输出一串文字(非节点),例如:
<body>
Hello, Leepy!
<span>其他的…</span>
</body>
会弹出一个提示“对象不支持此属性或方法”的对话框。利用IE调试工具发现,错误的地方落在:
代码
insertHtml: function (where, el, html) {
var hash = {},
hashVal,
setStart,
range,
frag,
rangeEl,
rs;
if (el.nodeType == 3) {
var span = document.createElement('span');
//parentSpan = el.parentNode.insertBefore(span);
parentSpan = el.parentNode.insertBefore(span, el); //firefox的insertBefore需要具有第二个参数,否则会报错
parentSpan.appendChild(el);
el = parentSpan;
}
where = where.toLowerCase();
hash[beforebegin] = ['BeforeBegin', 'previousSibling'];
hash[afterend] = ['AfterEnd', 'nextSibling'];
if (el.insertAdjacentHTML) {
if (tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))) {
return rs;
}
hash[afterbegin] = ['AfterBegin', 'firstChild'];
hash[beforeend] = ['BeforeEnd', 'lastChild'];
if ((hashVal = hash[where])) {
el.insertAdjacentHTML(hashVal[0], html);
return el[hashVal[1]];
}
} else {
range = el.ownerDocument.createRange();
setStart = 'setStart' + (endRe.test(where) ? 'After' : 'Before');
…
}
这里红色字体的意思是,首先创建一个span元素,然后将el的父节点下插入这个元素,然后在把el放入parentSpan中,最后给el重新赋值。这样就完成了文本元素的包装。
最后再看下结果,调试通过了。
这里是我在使用Extjs遇到的一个问题,给碰到该问题的朋友指明一个方向:)
<body>
Hello, Leepy!
<span>其他的…</span>
</body>
会弹出一个提示“对象不支持此属性或方法”的对话框。利用IE调试工具发现,错误的地方落在:
代码
insertHtml: function (where, el, html) {
var hash = {},
hashVal,
setStart,
range,
frag,
rangeEl,
rs;
if (el.nodeType == 3) {
var span = document.createElement('span');
//parentSpan = el.parentNode.insertBefore(span);
parentSpan = el.parentNode.insertBefore(span, el); //firefox的insertBefore需要具有第二个参数,否则会报错
parentSpan.appendChild(el);
el = parentSpan;
}
where = where.toLowerCase();
hash[beforebegin] = ['BeforeBegin', 'previousSibling'];
hash[afterend] = ['AfterEnd', 'nextSibling'];
if (el.insertAdjacentHTML) {
if (tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))) {
return rs;
}
hash[afterbegin] = ['AfterBegin', 'firstChild'];
hash[beforeend] = ['BeforeEnd', 'lastChild'];
if ((hashVal = hash[where])) {
el.insertAdjacentHTML(hashVal[0], html);
return el[hashVal[1]];
}
} else {
range = el.ownerDocument.createRange();
setStart = 'setStart' + (endRe.test(where) ? 'After' : 'Before');
…
}
这里红色字体的意思是,首先创建一个span元素,然后将el的父节点下插入这个元素,然后在把el放入parentSpan中,最后给el重新赋值。这样就完成了文本元素的包装。
最后再看下结果,调试通过了。
这里是我在使用Extjs遇到的一个问题,给碰到该问题的朋友指明一个方向:)
相关文章推荐
- ExtJs在IE下存在的一个bug
- ExtJs在IE下存在的一个bug
- 一个在IE5.5,IE6,IE7,IE8都存在的BUG
- Firefox2的一个bug和脑子进了水的IE
- 渣渣用JavaScript开发的消消乐,由于没有按照正规消消乐形式生成,是随机产生图形,所以存在一个算法bug,具体看下面,高手想到可以告诉我
- 分享:Microsoft IE Webcontrols Treeview的一个bug及修正
- SSAS实践问题记录--后端数据库访问模块中存在错误。 为绑定指定的大小太小,导致一个或多个列值被截断。
- 记一个比较诡异的“bug”-快速点击下,ie下面a标签(javascript:void(0))打开新页面
- 关于神一样存在的csdn-一个bug的修复时间是以年记?而且目前还没解决!!!
- ie 处理 gif动画 的onload 事件的一个 bug
- 关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
- IE框架中访问不同域的网页不能带入COOKIE————是IE浏览器的一个BUG?
- ie 处理 gif动画 的onload 事件的一个 bug
- IE处理GIF动画图片onload事件的一个BUG
- 如何用extjs显示一个已经存在的页面
- 一个潜伏了4年之久的简单bug终于浮出水面---理解夏令时并实践玩转它
- IE下神奇的一个Bug!
- 使用jbpm的存在的一个bug 流已经被关闭
- ie里的button标签的一个bug
- 为extjs的TabPanel 添加右键关闭效果(修改一个bug)