IE与我的javascript后台更改代码配合得更好.为什么?
IE acts wierd with my javascript background changing code. Why?
目前,我正在制作一个网站作为我的个人项目。我已经测试了我的javascript,它在chrome和firefox上都运行良好。但当我在IE中测试它时,只有部分代码有效。奇怪的是,当我按下f12并打开开发工具时,代码运行得很完美!工作如常,没有任何错误。
这是我的javascript:
var state_Clicked = false;
var List = document.createElement("div");
function gearClick() {
if(state_Clicked == true) {
List.parentNode.removeChild(List);
state_Clicked = false;
} else {
List.setAttribute("id", "containBox");
List.setAttribute("class", "bgChooserBox");
List.innerHTML = '<span class="thumback"><img onMouseDown="changeBackground(''RD1_SlurpyNom.jpg'');" class="thumb" src="GRAPHICS/bg/RD1_SlurpyNom.jpg" width="100" height="100" /></span> '
<span class="thumback"><img onMouseDown="changeBackground(''FS1_SlurpyNom.jpg'');" class="thumb" src="GRAPHICS/bg/FS1_SlurpyNom.jpg" width="100" height="100" /></span> '
<span class="thumback"><img onMouseDown="changeBackground(''AJ1_SlurpyNom.png'');" class="thumb" src="GRAPHICS/bg/AJ1_SlurpyNom.png" width="100" height="100" /></span> '
<span class="thumback"><img onMouseDown="changeBackground(''PP1_SlurpyNom.png'');" class="thumb" src="GRAPHICS/bg/PP1_SlurpyNom.png" width="100" height="100" /></span> '
<span class="thumback"><img onMouseDown="changeBackground(''R1_SlurpyNom.jpg'');" class="thumb" src="GRAPHICS/bg/R1_SlurpyNom.jpg" width="100" height="100" /></span> '
<span class="thumback"><img onMouseDown="changeBackground(''TS1_SlurpyNom.jpg'');" class="thumb" src="GRAPHICS/bg/TS1_SlurpyNom.jpg" width="100" height="100" /></span> ';
document.getElementsByTagName("body").item(0).appendChild(List);
state_Clicked = true;
}
}
function changeBackground(name) {
console.log('/GRAPHICS/bg/' + name);
document.getElementById("body").style.backgroundImage = 'url(/GRAPHICS/bg/' + name + ')';
document.getElementById("logo").style.opacity = '0.4';
}
如有任何帮助,我们将不胜感激。
console.log
是最有可能导致问题的原因。控制台不是DOM中的实际对象,它通常由firebug、chrome开发工具、IE开发工具等工具添加到DOM中。chrome和Firefox的新版本在未打开时会忽略控制台调用。或者至少我认为情况是这样的,因为现在很多人都在使用控制台进行调试,而且它可以让人们更容易地进行调试。
无论如何,在IE的情况下,当你打开开发工具时,控制台是一个活动对象,因此你的脚本在打开时不会中断,但是当它关闭时,控制台对象不在那里,而且在这种事件中浏览器不会忽略它,因此脚本正在中断。
IE一直是,而且很可能永远是每个网络开发人员的眼中钉。
如果你想用控制台进行调试,我的建议是在逻辑中添加一个if-else,这样你就可以在它打开和关闭的情况下来回切换。
类似if(console.length > 0){console.log('blah');}
删除console.log
调用。它需要一个可用的console
对象,否则将引发错误。这就是为什么当你打开开发者工具时,它会起作用,它们提供了一个控制台。
相关文章:
- 有没有更好的动手、具体的方法来学习Javascript
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 在JavaScript中拆分日期字符串的更好方法是什么
- 为什么$.brower被弃用?还有什么更好的替代方案
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- IE与我的javascript后台更改代码配合得更好.为什么?
- 为什么将 JSON 对象存储在 cookie 中比字符串更安全或更好
- 匿名函数与命名函数哪个更好,为什么
- 标题大小写一个句子 - 哪个解决方案更好,为什么
- 为什么这个jQuery显示/隐藏切换有效,以及我如何使它变得更好
- SetTimeout -为什么传递函数比传递字符串更好
- lang . isundefined vs . typeof undefined,哪个更好,为什么?
- 性能方面,算法复杂性方面,下面两个JS函数中哪一个用于将字符串的第一个字母大写更好,为什么?
- 为什么Angular JS中的依赖项注入比手工管理依赖项更好
- 为什么requestAnimationFrame比setInterval或setTimeout更好
- 为什么要在数组上使用排序映射.在某些情况下如何更好
- 哪个更好,为什么
- 哪一种定义变量的方法更好?为什么?
- 为什么属性初始化为null的对象数组处理得更好
- 这些原型声明中哪一个更好,为什么?