主干.js IE8 appendChild() 错误
backbone.js IE8 appendChild() error
典型的"在Chrome/FF中工作,但不能在IE中工作"的故事。IE9似乎处理得很好。
IE 控制台中唯一显示的是:
SCRIPT65535:对方法或属性访问的意外调用。jquery.min.js,第 3 行字符 32461
下面是跟踪错误的 IE 探查器的屏幕截图。
这是我的 Nav.js 文件中的代码:
// Build nav menu array
var navLinks = [ {"style" : "home" ,"page" : "" ,"name" : "Home" ,"tier" : 1 ,"icon" : "home"},
{"style" : "job-trans" ,"page" : "view/jobTransaction" ,"name" : "Job Transactions" ,"tier" : 1 ,"icon" : "barcode"},
{"style" : "job" ,"page" : "view/job" ,"name" : "Jobs" ,"tier" : 1 ,"icon" : "inbox"},
{"style" : "user" ,"page" : "view/user" ,"name" : "Users" ,"tier" : 1 ,"icon" : "user"},
{"style" : "report" ,"page" : "page/report" ,"name" : "Reports" ,"tier" : 2},// ,"icon" : "signal"},
{"style" : "customer" ,"page" : "view/customer" ,"name" : "Customers" ,"tier" : 2}
];
var jobSearchAttr = $.browser.msie ? "value='"Enter Job #'" data-browser='"IE'" style='"font-size: 16px'"" : "placeholder='"Enter Job #'"";
var userSearchAttr = $.browser.msie ? "value='"Enter User ID'" data-browser='"IE'" style='"font-size: 16px; padding-left:0;'"" : "placeholder='"Enter User ID'"";
// Sort array elements into buttons and dropdowns with appropriate elements
var i, t1LinkArray = [], t2LinkArray = [], t2ClassArray = [];
for (var i = 0; i < navLinks.length; i++) {
switch(navLinks[i]["tier"]) {
case 1:
t1LinkArray.push( "<li class='"" + navLinks[i]['style'] + "'"><a href='"#/" + navLinks[i]['page'] + "'"><i class='"icon-" + navLinks[i]['icon'] + " icon-white'"></i> " + navLinks[i]['name'] + "</a></li>" );
break;
case 3:
t2LinkArray.push( "<li class='"" + navLinks[i]['style'] + "'"><a href='"#/" + navLinks[i]['page'] + "'">" + navLinks[i]['name'] + "</a></li>" );
t2ClassArray.push( navLinks[i]['style'] );
break;
}
}
// Create Navbar View
NavView = Backbone.View.extend({
// Define View template
template: _.template( $('#navbarTemplate').html() ),
initialize: function () {
this.render();
},
render: function () {
// Call the template and pass data object
this.$el.html( this.template({ t1LinkArray : t1LinkArray, t2LinkArray : t2LinkArray, t2ClassArray : t2ClassArray }) );
},
});
var nav = new NavView({ el:$('nav') });
不知道为什么这仅在IE 7/8中崩溃。
编辑 :: 这是模板,目前嵌入在正文下方。
<div class="navbar navbar-fixed-top" style="clear: both;">
<div class="navbar-inner">
<div id="navbar" class="container-fluid">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<p class="navbar-text pull-right"><a class="brand" href="/workflow3"><em>Brand</em></a></p>
<div class="nav-collapse pull-left">
<ul class="nav">
<!-- List Tier 1 pages -->
{{ t1LinkArray.join("'n") }}
<!-- Style dropdown with each child's page class -->
<li class="dropdown {{ t2ClassArray.join(" ") }}">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b>
</a>
<ul class="dropdown-menu">
<!-- List Tier 2 pages -->
{{ t2LinkArray.join("'n") }}
</ul>
</li>
</ul>
</div> <!-- /.nav-collapse -->
</div> <!-- /.container-fluid -->
</div> <!-- /.navbar-inner -->
</div> <!-- /.navbar -->
老问题,但我今天收到此错误,这是最重要的结果,所以我想仍然相关。
您在标记中使用了 html5 数据属性 - 大概您的文档是 html5? 如果您使用了IE8不支持的任何新标记(没有添加某些描述的填充程序),jQuery将产生此错误。在页面头部尝试此操作。
<!--[if IE]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
除此之外,它显然倾向于以格式错误的 html 出现 - 例如。 如果您忘记关闭标记或错过属性中的结束引号。
我今天刚刚帮助一位同事在IE8中解决此问题。我们发现他试图附加到一个不能有孩子的元素(在他的情况下,一个IMG标签)。
我注意到new NavView({ el:$('nav') });
上的jQuery选择器应该是.nav没有nav
标签(至少在您的代码示例中),因此它试图将节点添加到不存在的元素中。
我仍然没有找到解决手头实际问题的方法。从技术上讲,这甚至不算是变通方法,但它确实创造了一个工作环境!
http://www.chromium.org/developers/how-tos/chrome-frame-getting-started
明显的优势,不再需要迎合IE的特质。
我讨厌不知道是什么原因造成的,所以其他人,请随时回答。
- 我该如何解决这个问题?“未捕获的类型错误:无法读取 null 的属性'appendChild'”
- 收到错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- appendChild上的错误-试图在不存在节点的上下文中引用该节点
- 未捕获错误:NOT_FOUND_ERR:appendChild调用的DOM异常8
- 1.js:23未捕获类型错误:执行'失败;appendChild'在'节点':参数1不是
- Sid.js:未捕获类型错误:无法读取未定义的属性“appendChild”
- appendChild 不是函数错误 (JAVASCRIPT)
- 收到错误:无法在“节点”上执行“appendChild”
- 主干.js IE8 appendChild() 错误
- 当我在真正的存在引用中使用 appendChild (“
”) 时发生错误 - 未捕获的类型错误:在 Ajax 调用后无法读取未定义的属性“appendChild”
- 错误:无法在“节点”上执行“appendChild”:参数 1 的类型不是“节点”
- appendChild不工作并显示错误
- "无法调用方法'appendchild'为空“;..错误为什么?
- 传单.markrcluster onclick错误-无法执行'appendChild'在'节点&
- 类型错误:Node的参数1.appendChild不是一个对象
- 未捕获类型错误:Failed to execute 'appendChild'on 'Node&
- 错误是不能读取appendChild的属性
- 未捕获类型错误:Failed to execute 'appendChild'on 'Node&
- 数据表错误'执行appendChild()失败'