请高人指教:这段js代码t.onclick=function(){alert('');}为啥不能在火狐上弹窗呢?
在IE和google能实现弹窗。难到是我的火狐浏览器出现问题了吗?我该怎样修复呀?<divid="post"><h2>发表帖子</h2><formmethod="post...
在IE和google能实现弹窗。难到是我的火狐浏览器出现问题了吗?我该怎样修复呀?
<div id="post">
<h2>发表帖子</h2>
<form method="post" name="post" action="?action=post">
<div id="color">
<em><input type="text" name="t" value="#" id="t"/></em>
</div>
</form>
</div>
这是js代码:
window.onload = function () {
var html = document.getElementsByTagName('html')[0];
var fm = document.getElementsByTagName('form')[0];
var color = document.getElementById('color');
html.onmouseup = function () {
color.style.display = 'none';
};
fm.t.onclick=function(){
alert('');
}
////这个是我用id来取得元素也不能实现效果
// var t = document.getElementById('t');
// t.onclick=function(){
// alert('');
// }
};
都过逐条排查,我发现是
html.onmouseup = function () {
font.style.display = 'none';
color.style.display = 'none';
};
这条代码的存在导致了点击html中的文本框 t 不能实现弹窗的,我想请高人指点一下,我该怎样改写代码,才能实现兼容呀? 展开
<div id="post">
<h2>发表帖子</h2>
<form method="post" name="post" action="?action=post">
<div id="color">
<em><input type="text" name="t" value="#" id="t"/></em>
</div>
</form>
</div>
这是js代码:
window.onload = function () {
var html = document.getElementsByTagName('html')[0];
var fm = document.getElementsByTagName('form')[0];
var color = document.getElementById('color');
html.onmouseup = function () {
color.style.display = 'none';
};
fm.t.onclick=function(){
alert('');
}
////这个是我用id来取得元素也不能实现效果
// var t = document.getElementById('t');
// t.onclick=function(){
// alert('');
// }
};
都过逐条排查,我发现是
html.onmouseup = function () {
font.style.display = 'none';
color.style.display = 'none';
};
这条代码的存在导致了点击html中的文本框 t 不能实现弹窗的,我想请高人指点一下,我该怎样改写代码,才能实现兼容呀? 展开
3个回答
展开全部
试试改成这样吧
html.onmouseup = function(){
setTimeout("color.style.display = 'none';",1);
};
应该是FireFox处理事件的机制与其它浏览器不同所致,猜测是先触发onmouseup事件,但在该事件处理函数中,将color元素隐藏,无法再触发onclick事件.做一下异步,让事件优先传递到onclick,然后再将其隐藏,就可以了.
但在设计上还是避免这种情况发生的好.
html.onmouseup = function(){
setTimeout("color.style.display = 'none';",1);
};
应该是FireFox处理事件的机制与其它浏览器不同所致,猜测是先触发onmouseup事件,但在该事件处理函数中,将color元素隐藏,无法再触发onclick事件.做一下异步,让事件优先传递到onclick,然后再将其隐藏,就可以了.
但在设计上还是避免这种情况发生的好.
追问
你的建议虽然不能在源代码中解决问题,但在本例中,我试过可以在火狐中运行的,也许我对这个语法很陌生,不能将其灵活套用在源代码中,而使之失效,很抱歉。但是你的提议确实很不错,我会好好学习的,祝你顺利
展开全部
您好!很高兴为您答疑!
您可以安装Firebug检查页面代码,它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
您可以安装Firebug检查页面代码,它集HTML查看和编辑、Javascript控制台、网络状况监视器于一体,是开发JavaScript、CSS、HTML和Ajax的得力助手。
您可以在火狐社区了解更多内容。希望我的回答对您有所帮助,如有疑问,欢迎继续在本平台咨询。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想实现什么效果?
更多追问追答
追问
就是点击那个文本框后弹窗呀,在其他浏览器中都能实现,唯独在火狐中不能实现呀
我这个文本框在项目中是实现在其中输入内容后,在点击它后,其内容自动添加到下面的文本区域,然后自动隐藏文本框,在这里我为了使问题更明了,将其代码改为alert('');弹窗了
追答
不要设置fm.t的点击事件,设置聚焦事件,试试~
fm.t.onfocus=function(){
alert('');
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询