标题显示我在所有IE版本中都有原型更新功能的问题,但它在FF和chrome中工作
这不起作用
var element = $('mainnav_h');
element.cleanWhitespace();
var html = element.firstChild.innerHTML;
html = html.gsub('<span class="sep"></span>', '');
element.firstChild.update(html);//this doesn't word
但这可行
var element = $('mainnav_h');
element.cleanWhitespace();
var html = element.firstChild.innerHTML;
html = html.gsub('<span class="sep"></span>', '');
element.firstChild.update("this works");
来源
<div class="innerNavigation_horizontal clear">
<ul id="mainnav_h">
<li><span class="sep"></span><a href="#" title="#">items</a></li>
</ul></div>
当我将变量传递给update()函数时,你可以清楚地看到它在IE中不起作用,当我将字符串传递给它它在IE中工作时,可以解释一下这种荒谬的IE行为吗
萨勒曼
答案 0 :(得分:0)
我的猜测是问题不在于update()
,而在于上述功能之一适用于HTML。
您可以在脚本的每个阶段使用alert()
进行html的测试输出吗?它首先包含任何内容吗?
#mainnav_h
看起来像什么?你可以发布消息来源吗?
element.firstChild
确实存在吗?你能用
alert(typeof element.firstChild);
您在IE中收到任何错误消息吗?
答案 1 :(得分:0)
在这种情况下,问题显然与HTML大小写/语法有关,但对于到达此处的其他Google员工,我建议禁用IE兼容模式。我可以通过执行:
轻松地在IE控制台(F12)中重新创建问题文档模式IE7标准:
>> span = document.createElement("span");
[object] {
nextSibling : ,
onresizeend : null,
onrowenter : null,
aria-haspopup : "",
childNodes : [object],
ondragleave : null,
oncut : null,
clientHeight : 0,
onbeforepaste : null,
ondragover : null
...
}
>> span.update()
"Object doesn't support property or method 'update'"
文档模式IE9标准:
>> span = document.createElement("span");
[object] {
nextSibling : ,
onresizeend : null,
onrowenter : null,
aria-haspopup : "",
childNodes : [object],
ondragleave : null,
oncut : null,
clientHeight : 0,
onbeforepaste : null,
ondragover : null
...
}
>> span.update()
[object] {
nextSibling : ,
onresizeend : null,
onrowenter : null,
aria-haspopup : "",
childNodes : [object],
ondragleave : null,
oncut : null,
clientHeight : 0,
onbeforepaste : null,
ondragover : null
...
}
当然,这只适用于在已加载原型框架的网站上运行控制台,例如: www.redmine.org。