Saya sedang menulis kode JavaScript kecil yang akan memuat file js eksternal saat memuat halaman html.
Saya menguji 2 cara.
Kasus 1: Menggunakan document.write untuk menambahkan tag ‹script›. Ini berfungsi untuk semua browser (IE, FF, Safari, Chrome, Opera).
Kasus 2: Menggunakan DOMElement.appendChild untuk menambahkan tag ‹script› ke elemen ‹haed›.
Hanya berfungsi untuk IE, FF, dan Opera. TIDAK berfungsi untuk Safari dan Chrome.
Dalam kedua kasus tersebut, saya berharap tag ‹script› baru dimasukkan sebelum tag penutup ‹head›. Jadi tag ‹script› baru dievaluasi sebelum memproses ‹body›, dan pada saat window.onload dipanggil, variabel "success" seharusnya sudah benar.
Tapi itu bukan untuk Safari dan Chrome.
Adakah yang bisa mengetahui apakah ini harusnya berhasil atau tidak? Terima kasih.
<html>
<head>
<title>JavaScript loading test</title>
<script type="text/javascript">
var success = false;
window.onload = function()
{
document.getElementById("result").innerHTML = success? "OK": "ERROR!";
}
// TEST CASE 1.
// Works for all browsers.
document.write('<script type="text/javascript" src="foo.js"></' + 'script>');
// TEST CASE 2.
// Only works for Opera, FireFox, Opera.
// var scriptElem = document.createElement("script");
// scriptElem.setAttribute("type", "text/javascript");
// scriptElem.setAttribute("src", "foo.js");
// var headElem = document.getElementsByTagName("head")[0];
// headElem.appendChild(scriptElem);
</script>
<!-- expected new scrip tag being inserted here. -->
</head>
<body>
Testing...<br/>
<span id="result"></span>
</body>
</html>
"foo.js" hanyalah satu baris kode.
success = true;
'...</'+'script>
masih tidak valid. Cara valid paling sederhana untuk melindungi literal string tag akhir di dalam blok skrip adalah<\/script
. - person bobince   schedule 06.02.2010