下面的代码在IE8中不起作用,但是,它在FireFox和Google Chorome上完美运行,即使IE8没有抛出任何错误,但输出还没有到来。任何的想法?实际问题是什么?
<html>
<head/>
<body>
<script type="text/javascript">
(function(){
var inpEle = document.createElement("div");
inpEle.setAttribute("id", "div1");
var texEle = document.createTextNode("This is my Sample Para. I am testing it again my own level that prove How i am capable of.");
inpEle.appendChild(texEle);
document.body.appendChild(inpEle);
})();
(function(){
var inpEle1 = document.createElement("input");
inpEle1.setAttribute("type", "button");inpEle1.setAttribute("value", "Show");inpEle1.setAttribute("onclick", "Show()");
document.body.appendChild(inpEle1);
var inpEle2 = document.createElement("input");
inpEle2.setAttribute("type", "button");inpEle2.setAttribute("value", "Hide");inpEle2.setAttribute("onclick", "Hide()");
document.body.appendChild(inpEle2);
})();
</script>
<script type="text/javascript">
window.onload= function(){
document.getElementById('div1').style.display="none";
}
Show = function (){
document.getElementById('div1').style.border="2pt solid green";
document.getElementById('div1').style.display="";
}
Hide = function(){
document.getElementById('div1').style.border="";
document.getElementById('div1').style.display="none";
}
</script>
</body>
</html>
答案 0 :(得分:3)
在解析document.body.appendChild()
标记之前,您可能无法在IE8中使用</body>
,并且您的代码在仍在解析时试图附加到正文。像IE6这样的早期版本的IE可能会在您执行此操作时中止(例如字面上崩溃)。更高版本(如IE8)只会忽略您的请求。
您可以在解析正文时使用document.write()
添加内容。
您可以推迟调用代码,直到主体完成加载和解析(例如<body onload="xxx()">
处理程序)或window.onload
之类的事件触发为止。
你可以appendChild()
到已经完成解析的元素(在你的脚本之前的东西)。
最简单的解决方案可能是在脚本之前将<div id="container"></div>
放在主体中并附加到主体上,而不是将其附加到函数中,或者将代码放在函数中并让body onload事件调用函数。
有关问题的说明,请参阅this article。
答案 1 :(得分:0)
转到Internet选项 - 安全选项卡 - Internet - 单击“自定义”按钮,然后向下滚动到其他部分。“允许没有大小或位置限制的脚本启动的窗口”查找“活动脚本”,然后选中启用。< / p>
答案 2 :(得分:0)
不要使用setattribute对事件使用匿名函数
inpEle1.onclick = function() {
Show();
};
它也适用于IE8中的IE测试程序,但不是IE7,你是否使用IE7兼容性
答案 3 :(得分:0)
我注意到,element.style.display并不总是适用于IE8。
以下是提高兼容性的方法:
if (element.style.setAttribute)
element.style.setAttribute("display", value);
else
element.style.display = value;
致以最诚挚的问候,