2011-01-07 10 views
20

以下は私のYWAラッパーそれは、ページのロード上で実行していますクロムはなぜ「キャッチされていないエラー:NOT_FOUND_ERR:DOM例外8」を投げますか?

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 

ためのコードであるので、JSは、文書のheadタグを見つけることができないというのは意味がありません。

アイデア?

おかげ


Operaは同じ行に、このエラーがスローされます。 Uncaught exception: Error: WRONG_ARGUMENTS_ER Firebugのは言う:document.head is undefined [Break On This Error] document.head.appendChild(astr_ywascript);ラインで

答えて

16

(document.createElement("script").type = "text/javascript").src 

あなたは、文字列の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); 

生Javascriptがめったに1は、jQueryを使ってに慣れる流体ように動作しません。

あなたはまた、次のように頭を取得したい場合があります:

document.getElementsByTagName("head")[0] 
8

私がやっていたので、私はBACKBONE.JSと、このエラーを得た:

$('#backbone').html(@view.render()) 

代わりの

$('#backbone').html(@view.render().el) 

私はしなければならないようです。まだこの「エル」ビジネスが何であるかは分かりませんが、私はすぐにそれを把握すると確信しています。

+5

.elは、render()によって更新される要素へのバックボーンの参照です。 'return this.el'を期待しているように聞こえると、' $(...) 'を行うことができるように思えるようなときに、あなたはおそらく 'return this;'をあなたのrender()メソッドで返します。 .html(@ view.render()) ' –

+0

このコメントは、私のために大きな頭痛を解決しました!私は、なぜthis.elを返すのではなく、render関数から 'これを返す'ことがコンベンションであるのか知りたいですか? – garmur

+1

.append()関数に配列を渡すときに同じ問題が発生していました。単純なhtmlテキストを渡すのではなく、** htmlテキストの配列**を渡したので、問題が発生しました。 – userfuser

0

“Uncaught Error: NOT_FOUND_ERR: DOM Exception 8エラーの回答を検索していたように、このページをヒットした人にこの回答を追加するだけです。

Chromeでこのエラーが発生しました。私の場合、私が使用していた.appendChild(ttt);

問題は、tttが、追加しようとしていたdivの代わりに配列オブジェクトだったということでした。

あなたが追加しているものが実際にはDOMオブジェクトであり、間違って別のオブジェクトタイプでないことを確認してください。