2

Web ページ index.php があり、このページに JS ファイルを動的に追加および削除したい

これまでのところ、

<script type="text/javascript" src="" id="dynamic_files"></script>

このスクリプトタグのsrcを次のように変更する予定でした

function loadJsfiles( filename ){ 
    var filePath = 'include/js/'+filename;
    $("script#dynamic_files").attr('src',filePath);
};

含まれている js ファイルには script タグが含まれています。

document.write('<script type="text/javascript" src="include/js/profile1.js"></script>');
document.write('<script type="text/javascript" src="include/js/profile2.js"></script>');
document.write('<script type="text/javascript" src="include/js/profile3.js"></script>');
document.write('<script type="text/javascript" src="include/js/profile4.js"></script>'); –

私の質問は、

そのスクリプト タグはドキュメント ページに印刷されますか? その場合、どのように削除すればよいですか?

参考:動的jsファイル

4

3 に答える 3

1

ロード後に document.write を実行することはできません

ここを見て:

Javascript: createElement スクリプトで "document.write" を実行できませんでした

ページが消去されることに気付くでしょう。

スクリプトを挿入するためにどの方法を使用してもかまいません。document.write の使用を停止するか、document.write をカスタム メソッドに置き換える必要があります。

おそらく、 require.jsのようなものを使用したいでしょう- これは JavaScript ローダーです ( https://developers.google.com/loader/よりも優れたリンクを提供してくれた Jared に感謝し ます) 。

于 2012-06-09T05:22:32.523 に答える
0

より良い例は、グーグルアナリティクスです

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
于 2012-06-09T05:26:50.723 に答える
0

これが私がすることです:

var dynScript,dynParent;

function createjsfile(filename) {
    var fileref = document.createElement('script');
    fileref.setAttribute("type", "text/javascript");
    fileref.setAttribute("src", filename + "?noxhr="+(new Date()).getTime());
    return fileref;
}

function loadjsfile(filename){
    dynScript = createjsfile(filename);
    dynParent = document.getElementsByTagName("head")[0];
    dynParent.appendChild(dynScript);
}

function replacejsfile(filename) {
    var newelement = createjsfile(filename);
    dynParent.replaceChild(newelement, dynScript);
    dynScript = newelement;
}

body.loadがするイベントでloadjsfile("script.js")

そして、リロードしたいときreplacejsfile("script.js")

于 2013-09-27T23:15:11.670 に答える