2017-05-04 3 views
1

なぜこれは機能しませんか?私は疑問に悩まされていることは知っていますが、私の場合は、なぜこのスクリプトを頭に付けるのが私が望むように動作しないのか分かりません。<head>にスクリプトを追加しても機能しませんが、手動で書き込むことはできますか? Chromeデバッガで同じものがレンダリングされる

スクリプトを追加するので、クロムデバッガで見ることができます。しかし、私はまだエラーに私がコピーした場合/クロムデバッガ(私のスクリプトによって作成され、頭に追加されたもの)から直接outerHTMLを貼り付けるので、意味がありません

tools.js:26 Uncaught ReferenceError: script_object is not defined

を取得し、直接index.htmに貼り付けてください。それはうまく動作します。

コード:

var afterTools = document.getElementById("toolsId").nextSibling; 
var script = document.createElement("script"); 
script.setAttribute("type","text/javascript"); 
script.setAttribute("src","scripts/thescript.js"); 

document.head.insertBefore(script, afterTools); 


let temp = script_object; // Object hardcoded in thescript.js 
console.log(temp); 

私は後に追加していますスクリプト:それはつまるところ何

<script id="toolsId" type="text/javascript" src="scripts/tools.js" defer></script> 

は、Chromeのデバッガは、手動でスクリプトを書いて、またはそれを追加する間に違いを示していないということです。しかし、手動で書かれていない限り、スクリプト内のオブジェクトは認識されません。

答えて

1
tools.js:26 Uncaught ReferenceError: script_object is not defined 

変数をインスタンス化する前に参照しています。それは...おそらくあなたがdeferを使用しているという事実によって引き起こされる、それを参照する前に利用可能でなければなりません

このブール属性は スクリプトが実行されることを意図しているブラウザに示すように設定されて

延期ドキュメントが解析された後で、DOMContentLoadedを実行する前に と入力します。 defer属性は、外部スクリプトで使用されるのは である必要があります。

ソース:https://developer.mozilla.org/pt-BR/docs/Web/HTML/Element/script

だから、ブラウザのみ、それはその時点で利用できないため、それに依存してあなたの最初のコードの後に​​、それを実行しています。

+0

これには簡単な修正があるのでしょうか、それともスクリプトリストの作成に固執すべきですか? – Peebl

関連する問題