Internet Explorer中的JavaScript调试(第页上的所有脚本)
我是一个处于成熟阶段的项目的新手。其中一个页面上有许多JS脚本和库,jQuery被大量使用。IE7或8中有一个奇怪的错误:在页面脚本中间的某个地方执行jQuery对象变得不被定义,所以其他所有的东西都停止工作。 中间有两个脚本,比如:Internet Explorer中的JavaScript调试(第页上的所有脚本),javascript,debugging,internet-explorer-8,internet-explorer-7,Javascript,Debugging,Internet Explorer 8,Internet Explorer 7,我是一个处于成熟阶段的项目的新手。其中一个页面上有许多JS脚本和库,jQuery被大量使用。IE7或8中有一个奇怪的错误:在页面脚本中间的某个地方执行jQuery对象变得不被定义,所以其他所有的东西都停止工作。 中间有两个脚本,比如: <script src="script1.js"></script> <script src="script2.js"></script> 在脚本2的开头,我还原了它: if (!jQuery &&
<script src="script1.js"></script>
<script src="script2.js"></script>
在脚本2
的开头,我还原了它:
if (!jQuery && jQueryBackup) jQuery = jQueryBackup;
它使脚本工作,但不能解释一个变量如何在两个脚本之间变得不被定义(我把它看作字面上的两行代码)。尝试将它们放入
如果您想调试,我会这样做:
$.getScript("script1.js").done(function(script, textStatus) {
console.log('script1 is loaded');
$.getScript("script2.js").done(function(s,t){
console.log('script1.js is loaded');
});
})
.fail(function(jqxhr, settings, exception) {
console.log( "Triggered ajaxError handler." );
});
现在您可以调试它,还可以使用本机javascript和onload。如果你需要例子,请告诉我 示例:(此解决方案适用于IE8+、firefox和chrome)
没有代码就帮不了你…JS是一种解释语言。浏览器逐行执行。如果它在或中,它就没有相同的动作。
<head>
<script src="script1.js"></script>
<script src="script2.js"></script>
</head>
$.getScript("script1.js").done(function(script, textStatus) {
console.log('script1 is loaded');
$.getScript("script2.js").done(function(s,t){
console.log('script1.js is loaded');
});
})
.fail(function(jqxhr, settings, exception) {
console.log( "Triggered ajaxError handler." );
});
function handleOnLoad() {
// do the same here for the script.2 file
}
function IEhandleOnLoad() {
if (this.readyState === 'complete' || this.readyState === 'loaded') {
handleOnLoad();
}
}
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.onreadystatechange = IEhandleOnLoad;
s.onload = handleOnLoad;
s.src = 'script1.js';