Firefox中Javascript使用event对象需要注意的问题

    最近,有人向我反映,用Firefox访问博客园,无法使用搜索,输入搜索内容后无法提交。博客园的搜索功能是通过javascript提交的,代码如下:

<script language="JavaScript">
function SearchGoogle(key,evt)
        
{
            
if(event.keyCode==13 || event.keyCode==0)
            
{
                
var keystr = encodeURIComponent(key.value);
                url 
= "http://www.google.com/search?q=";
                url 
= url+keystr;
                url 
+= "&ie=UTF-8&oe=GB2312&hl=zh-CN&domains=www.cnblogs.com&sitesearch=www.cnblogs.com";
                window.location
=url;
                
            }

        }

</script>
<H2>Google站内搜索</H2>
<h4><input style="WIDTH: 130px" type="text" name="q" onkeydown="SearchGoogle(q)">&nbsp;<input onclick="SearchGoogle(q)" type="button" value="搜索" name="sa">
</h4>


这样的代码在IE中可以正常运行,但在Firefox中却出现event is not defined的错误。
因为在Firefox中使用了不同的事件对象模型,不同于IE Dom,用的是W3C Dom。
解决方法请看如下代码:

<script language="JavaScript">
function SearchGoogle(key,evt)
        
{
            
if(evt.keyCode==13 || evt.keyCode==0)
            
{
                
var keystr = encodeURIComponent(key.value);
                url 
= "http://www.google.com/search?q=";
                url 
= url+keystr;
                url 
+= "&ie=UTF-8&oe=GB2312&hl=zh-CN&domains=www.cnblogs.com&sitesearch=www.cnblogs.com";
                window.location
=url;
                
return;
            }

        }

</script>
<H2>Google站内搜索</H2>
<h4><input style="WIDTH: 130px" type="text" name="q" onkeydown="SearchGoogle(q,event)">&nbsp;<input onclick="SearchGoogle(q,event)" type="button" value="搜索" name="sa">
</h4>


posted @ 2005-02-17 22:51 dudu 阅读(12317) 评论(9)  编辑 收藏

  回复  引用    
#1楼 2005-05-10 09:09 | ≈水♂水≈ [未注册用户]
下面一个好象也没效果啊~`````
  回复  引用  查看    
#2楼 [楼主]2005-05-10 10:19 | dudu      
可以啊!你试试, 在Firefox中, 可以正常使用博客园的搜索功能。
  回复  引用    
#3楼 2005-07-14 16:32 | Chui Xue [未注册用户]
很奇怪的现象,直接用Firefox打开Cnblogs之后点击首页的Google查询是没有问题的,但是这段源码拷贝到本机测试就不行。当加上id="q"的时候才运行正常。还是应该使用id而避免使用name吧
  回复  引用    
#4楼 2005-07-31 15:08 | Wudi [未注册用户]
event.keyCode
  回复  引用    
#5楼 2005-08-18 10:14 | dany [未注册用户]
W3C 推荐使用ID
document.getElementBydi()
  回复  引用    
#6楼 2007-01-25 13:54 | 神州软件园 [未注册用户]
神州软件园 http://www.sooft.org
  回复  引用    
#7楼 2007-01-25 13:55 | 神州软件园 [未注册用户]
写得不错,很有帮助
  回复  引用    
#8楼 2007-05-10 14:54 | yoyo [未注册用户]
我写了一个函数:
<script>
function m(evt){
document.getElementById("area").innerHTML=evt.clientX +" , "+evt.clientY;

//document.getElementById("area").innerHTML= event.clientX;
}
</script>
<div id="area" style="font-size:36px;width:800px;height:600px;border:1px solid;" onmousemove="m(event);">d</div>

只是不明白原理,为啥非要加个“event”的参数?希望博主给与回复。直接发邮件或者去博客给我留言都可以,我的邮箱地址fesite(at)gmail(dot)com,谢谢
  回复  引用    
#9楼 2007-12-27 12:20 | Sylvia.Liu [未注册用户]
谢谢。很有帮助。我在firefox中试验了,的确好使,帮我解决了一个大问题啊。
感觉这方面的参考资料不是很多,楼主能不能推荐一些写的比较详细的参考书啊?

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
历史上的今天:

另存  打印