2011-01-07 14 views
20

Di seguito è il codice per il mio YWA involucroPerché chrome lancia qui "Errore non rilevato: NOT_FOUND_ERR: DOM Exception 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 

È gestito al caricamento della pagina, quindi non ha senso che JS non riesce a trovare il tag del documento testa.

Qualche idea?

Grazie


Opera getta questo errore sulla stessa linea. Uncaught exception: Error: WRONG_ARGUMENTS_ER Firebug dice: document.head is undefined [Break On This Error] document.head.appendChild(astr_ywascript);

risposta

16

Nella linea

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

si sta impostando la proprietà src di una stringa. Il compito tra parentesi restituisce il valore assegnato. Tu fai lo stesso errore più avanti nella linea, in ultima analisi, l'assegnazione di "http://d.yimg.com/mi/eu/ywa.js" a astr_ywascript

Spalato si affacciano su righe separate:

var el=document.createElement("script"); 
el.type="text/javascript" 
el.src=... 
document.head.appendChild(el); 

Raw JavaScript comporta raramente in modo fluido ci si abitua con jQuery.

si potrebbe anche voler ottenere la testa come segue:

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

ho ottenuto questo errore con Backbone.js perché stavo facendo:

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

Invece di

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

Come avrei dovuto fare. Ancora non so davvero cosa sia questo business 'el', ma sono sicuro che lo scoprirò presto.

+5

.el è il riferimento di Backbone all'elemento che viene aggiornato da render(). Probabilmente hai "return this;" nel tuo metodo render(), che restituisce un riferimento alla Backbone View stessa, quando suona come ti aspettavi "return this.el' che ti permetterebbe di fare' $ (...) .html (@ view.render()) ' –

+0

Questo commento mi ha appena risolto un enorme mal di testa! Sarei interessato a sapere perché la convenzione è di "restituire questo" dalla funzione di rendering anziché restituire this.el? – garmur

+1

Stavo ottenendo lo stesso problema quando si passa un array alla funzione .append(). Invece di passare un semplice testo html ho passato ** un array ** di testo html e questo ha reso il problema possibile. – userfuser

0

Basta aggiungere questa risposta per le persone che potrebbero colpire questa pagina come ho fatto mentre cercavo una risposta a un errore “Uncaught Error: NOT_FOUND_ERR: DOM Exception 8.

Ho avuto questo errore in Chrome. Nel mio caso stavo usando .appendChild(ttt);

Il problema era che ttt era un oggetto array al posto del div che intendevo aggiungere.

Quindi assicurati che quello che stai aggiungendo sia in realtà un oggetto DOM e non accidentalmente un tipo di oggetto diverso.

Problemi correlati