スクリプトまたはスタイルシートが HTML の head タグに既に追加されているかどうかを確認するために、この関数を作成しました。スクリプトが既に存在する場合、関数は同じ参照を再度追加することを防止する必要があります。
これは私のコードです:
function appendScript(path, type) {
var x = document.getElementsByTagName(type);
var header_already_added = false;
for (var i=0; i< x.length; i++){
if (x[i].src == path || x[i].href == path){
// ... do not add header again
header_already_added = true;
}
}
if (header_already_added == false){
var head = document.getElementsByTagName('head')[0];
// We create the style
if (type == 'link') {
var style = document.createElement('link');
style.setAttribute("rel", "stylesheet");
style.setAttribute("type", "text/css");
style.setAttribute("href", path)
head.appendChild(style);
} else if (type == 'script') {
var script = document.createElement('script');
script.setAttribute("type", "text/javascript");
script.setAttribute("src", path);
head.appendChild(script);
}
}
}
そして、私はこのように関数を呼び出します
appendScript('_css/style.test.css', 'link');
appendScript('_scripts/_js/script.test.js', 'script');
コンソールログには何も問題はありません..しかし、問題は、スクリプトが再び追加されるのを妨げないということです. 誰でも間違いを見つけることができますか?