猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
阅读:46466回复:60

关于Firefox不能使用ctrl+enter在某些论坛发贴的原因

楼主#
更多 发布于:2005-04-08 16:48
看到很多人抱怨Firefox不能使用ctrl+enter发贴,开始还以为这是一个IE为textarea增加的快捷键,做了几个test case试了以后才知道这并不是IE的功能.
很多报这个问题的人使用的是Dvbbs,找到Dvbbs的代码一看才知道这是Dvbbs自己实现的一个功能.在实现这个功能的时候,对IE和非IE浏览器做了不同的处理.看代码:
if (Dvbbs_bIsIE5){
		var Dvbbs_bodyTag="<style type=text/css>.quote{margin:5px 20px;border:1px solid #CCCCCC;padding:5px; background:#F3F3F3 }\nbody{boder:0px}.HtmlCode{margin:5px 20px;border:1px solid #CCCCCC;padding:5px;background:#FDFDDF;font-size:14px;font-family:Tahoma;font-style : oblique;line-height : normal ;font-weight:bold;}\nbody{boder:0px}</style></head><BODY bgcolor=\"#FFFFFF\" title=\"Ctrl+Enter直接提交贴子\" onkeydown=\"ctlent();\">";
	}else
	{
		var Dvbbs_bodyTag="<style type=text/css>.quote{margin:5px 20px;border:1px solid #CCCCCC;padding:5px; background:#F3F3F3 }\nbody{boder:0px}.HtmlCode{margin:5px 20px;border:1px solid #CCCCCC;padding:5px;background:#FDFDDF;font-size:14px;font-family:Tahoma;font-style : oblique;line-height : normal ;font-weight:bold;}\nbody{boder:0px}</style></head><BODY bgcolor=\"#FFFFFF\">";
	}

在为IE实现的代码部分多了一个事件处理
onkeydown=\"ctlent();\"

而为非IE浏览器就没有.
再看这个事件处理调用的函数:
function ctlent(){
	var ispost=0;
	if (document.all)
	{
		if(event.ctrlKey && event.keyCode==13)
		{
		Dvbbs_CopyData('Body')
		Checkdata()
		if (ischeck==true){this.document.Dvform.submit();}
		}
	}
}

就是处理ctrl+enter提交表单的.
好了,结论就有了.这并不是一个兼容性的问题,因为论坛根本就没有为非IE浏览器实现这个功能.
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
1楼#
发布于:2005-04-08 16:48
在代码中为非ie浏览器实现一个类似的事件处理.
很容易做到.
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
2楼#
发布于:2005-04-08 16:48
还有哪个论坛?
猫头猪
狐狸大王
狐狸大王
  • UID163
  • 注册日期2004-11-25
  • 最后登录2005-12-04
  • 发帖数595
  • 经验10枚
  • 威望0点
  • 贡献值0点
  • 好评度0点
3楼#
发布于:2005-04-08 16:48
huangmiao:http://www.firefoxcn.com/bbs回到原帖

看这:
var ie = (document.all)? true:false
	if (ie)
	{
		window.document.onkeydown=ctlkey;
	}

no else.
IE ONLY.
游客

返回顶部