1
不幸的是,這個錯誤不會發生在我的應用程序之外!懶惰加載Javascript,對象不是從IE8緩存創建的
情景
的index.php
<?php
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').'GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Lazy loader</title>
</head>
<body>
...
<script type="text/javascript" src="internal.js"></script>
...
</body>
</html>
internal.js
myApp = {
timerHitIt: false,
hitIt: function() {
if (arguments.callee.done) { return; }
arguments.callee.done = true;
if (myApp.timerHitIt) { clearInterval(myApp.timerHitIt); }
var elt = document.createElement("script");
elt.async = true;
elt.type = "text/javascript";
elt.src = "external.js";
elt.onload = elt.onreadystatechange = function() { alert(typeof(something)); };
document.body.appendChild(elt);
}
};
if (document.addEventListener) { document.addEventListener("DOMContentLoaded", myApp.hitIt, false); }
/*@cc_on @*/
/*@if (@_win32)
document.write("<script id=__ie_onload defer src="+((location.protocol == "https:") ? "//:" : "javascript:void(0)")+"><\/script>");
document.getElementById("__ie_onload").onreadystatechange = function() {
if (this.readyState == "complete") { myApp.hitIt(); }
};
/*@end @*/
if (/WebKit/i.test(navigator.userAgent)) {
timerHitIt = setInterval(function() {
if (/loaded|complete/.test(document.readyState)) { myApp.hitIt(); }
}, 10);
}
window.onload = myApp.hitIt;
external.js
something = {};
alert(true);
有效再sults是
- 未定義 - >真 - >對象(±新的請求)
- 真實 - >對象(±緩存的JavaScript)
但有時候,按F5的時候,我得到
- 真實 - >未定義
有沒有人有一個線索,爲什麼警報(真)是前已經完成,但沒有設置?