为什么chrome会在这里抛出"Uncaught Error:NOT_FOUND_ERR:DOM Exception 8"?

Hub*_*bro 20 javascript onload yahoo-analytics domexception

下面是我的YWA包装器的代码

var astr_ywascript = (document.createElement("script").type = "text/javascript").src = "http://d.yimg.com/mi/eu/ywa.js";
document.head.appendChild(astr_ywascript); // <- error on this line
Run Code Online (Sandbox Code Playgroud)

它在页面加载时运行,因此JS无法找到文档头标记.

有任何想法吗?

谢谢


Opera在同一行上抛出此错误.Uncaught exception: Error: WRONG_ARGUMENTS_ER 萤火虫说:document.head is undefined [Break On This Error] document.head.appendChild(astr_ywascript);

spe*_*der 16

在线

(document.createElement("script").type = "text/javascript").src
Run Code Online (Sandbox Code Playgroud)

您正在设置字符串的src属性.括号中的赋值返回指定的值.你在后面的行中犯了同样的错误,最终分配"http://d.yimg.com/mi/eu/ywa.js"astr_ywascript

将其拆分为单独的行:

var el=document.createElement("script");
el.type="text/javascript"
el.src=...
document.head.appendChild(el);
Run Code Online (Sandbox Code Playgroud)

原始Javascript很少表现为人们习惯使用jQuery的流畅方式.

您可能还想获得如下头部:

document.getElementsByTagName("head")[0]
Run Code Online (Sandbox Code Playgroud)


Jef*_*key 8

我在Backbone.js中遇到此错误,因为我在做:

$('#backbone').html(@view.render())
Run Code Online (Sandbox Code Playgroud)

代替

$('#backbone').html(@view.render().el)
Run Code Online (Sandbox Code Playgroud)

就像我应该做的那样.仍然不知道这个'el'业务是什么,但我相信我很快就能搞清楚.

  • .el是Backbone对render()更新的元素的引用.你可能在你的render()方法中返回了这个``,它返回对Backbone View本身的引用,当它听起来像你期望`return this.el`时会让你做`$(...) html的(@ view.render())` (5认同)