为什么下面的代码火狐下不兼容呢?应该怎么改进?
<!DOCTYPEHTML><html><head><metahttp-equiv="Content-Type"content="text/html;charset=ut...
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>标题页</title>
<link type="text/css" rel="stylesheet" href="css/global.css" />
<link type="text/css" rel="stylesheet" href="css/main.css" />
<script language="javascript">
//动态添加按钮
var i=0;
function addInput(){
var o=document.createElement("input");
o.type="button";
o.value="按钮" + i++;
o.attachEvent("onclick",addInput);//为控件加事件
document.body.appendChild(o);//将事件添加到窗口中
o=null;//释放对象
}
</script>
<style>
</style>
</head>
<body onLoad="addInput();"></body>
</html> 展开
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>标题页</title>
<link type="text/css" rel="stylesheet" href="css/global.css" />
<link type="text/css" rel="stylesheet" href="css/main.css" />
<script language="javascript">
//动态添加按钮
var i=0;
function addInput(){
var o=document.createElement("input");
o.type="button";
o.value="按钮" + i++;
o.attachEvent("onclick",addInput);//为控件加事件
document.body.appendChild(o);//将事件添加到窗口中
o=null;//释放对象
}
</script>
<style>
</style>
</head>
<body onLoad="addInput();"></body>
</html> 展开
2个回答
展开全部
尊敬的用户,您好!很高兴为您答疑。
attachEvent是ie的独有方法,火狐并不支持。
firefox不支持IE的window.attachEvent的实现方法:
代码如下:
if (window.addEventListener) {
window.addEventListener('DOMContentLoaded', handler, false); //firefox
window.addEventListener('load', handler, false);
} else if (window.attachEvent) {
window.attachEvent('onload', handler); //IE
}
;
addEventListener-事件流讲解
说到 addEventListener 不得不说到事件流,先说事件流对后面的解释比较方便。
当一个事件发生时,分为三个阶段:
捕获阶段 从根节点开始顺序而下,检测每个节点是否注册了事件处理程序。如果注册了事件处理程序,并且 useCapture 为 true,则调用该事件处理程序。(IE 中无此阶段。)
目标阶段 触发在目标对象本身注册的事件处理程序,也称正常事件派发阶段。
冒泡阶段 从目标节点到根节点,检测每个节点是否注册了事件处理程序,如果注册了事件处理程序,并且 useCapture 为 false,则调用该事件处理程序。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
attachEvent是ie的独有方法,火狐并不支持。
firefox不支持IE的window.attachEvent的实现方法:
代码如下:
if (window.addEventListener) {
window.addEventListener('DOMContentLoaded', handler, false); //firefox
window.addEventListener('load', handler, false);
} else if (window.attachEvent) {
window.attachEvent('onload', handler); //IE
}
;
addEventListener-事件流讲解
说到 addEventListener 不得不说到事件流,先说事件流对后面的解释比较方便。
当一个事件发生时,分为三个阶段:
捕获阶段 从根节点开始顺序而下,检测每个节点是否注册了事件处理程序。如果注册了事件处理程序,并且 useCapture 为 true,则调用该事件处理程序。(IE 中无此阶段。)
目标阶段 触发在目标对象本身注册的事件处理程序,也称正常事件派发阶段。
冒泡阶段 从目标节点到根节点,检测每个节点是否注册了事件处理程序,如果注册了事件处理程序,并且 useCapture 为 false,则调用该事件处理程序。
希望我的回答对您有所帮助,如有疑问,欢迎继续咨询我们。
追问
发现javascript编写出来的代码要想兼容各大浏览器真是太繁琐了! 但是要成为真正的高手还必须要精通javascript!很纠结!!
展开全部
第一种方法:
document.getElementById(testbt).className = bordercss;
document.getElementById(testbt).style.cssText = color: #00f;;
document.getElementById(testbt).style.color = #00f;
document.getElementById(testbt).onclick= function () { alert(This is a test!);
第二种方法:
var input = document.createElement(input);
input.setAttribute(type, text);
input.setAttribute(name, q);
input.setAttribute(class,bordercss);
哪一种行,你自己试试。
document.getElementById(testbt).className = bordercss;
document.getElementById(testbt).style.cssText = color: #00f;;
document.getElementById(testbt).style.color = #00f;
document.getElementById(testbt).onclick= function () { alert(This is a test!);
第二种方法:
var input = document.createElement(input);
input.setAttribute(type, text);
input.setAttribute(name, q);
input.setAttribute(class,bordercss);
哪一种行,你自己试试。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询