Window.event.keyCode在IE中工作正常,但不能与firefox一起使用

时间:2013-10-29 13:18:20

标签: javascript

下面的HTML代码在chrome中运行良好,但在Firefox中,由于在Firefox中未定义Window.event而Chrome有一个事件,因此抛出错误。

   <div class="SbmtBtnText" tabIndex="3" 
     onkeydown="if(window.event.keyCode == 13)this.click();" 
     onkeyup="if(window.event.keyCode == 27)">
    Submit
    </div>

解决。

在FireFox中,由于高安全性不允许修改事件,因此没有IE中的全局事件属性。

已解决以下代码

 <div class="SbmtBtnText" tabIndex="3" onkeydown="var evt = event || 
 window.event; if(evt.keyCode == 13)this.click();" onkeyup="var evt = event 
 || window.event; if(evt.keyCode == 27)navClose();">Submitm
  </div>

3 个答案:

答案 0 :(得分:1)

在Firefox中,您需要使用event参数而不是window.event。您可以使用以下命令检查浏览器是否发送了事件参数:

var evt = event || window.event;

,并提供:

<div class="SbmtBtnText" tabIndex="3" 
     onkeydown="var evt = event || window.event; if(evt.keyCode == 13)this.click();" 
     onkeyup="var evt = event || window.event; if(evt.keyCode == 27)navClose();">
    Submitm
</div>

答案 1 :(得分:0)

在Firefox中,没有IE中的全局事件属性。 为了使它适用于IE和Firefox,你需要像这样处理它:

<script type="text/javascript">
    function OnKeyDown(evt) {
        if(!evt) 
            evt = window.event;

        if(evt.keyCode == 13)
            this.click();
    }

    function OnKeyUp(evt) {
        if(!evt) 
            evt = window.event;

        if(evt.keyCode == 27)
            navClose();
    }
</script>

<div class="SbmtBtnText" tabIndex="3" onkeydown="OnKeyDown();" onkeyup="OnKeyUp();">
    Submitm
</div>

答案 2 :(得分:0)

Reference here

调用javascript函数,如下所示

function keyDown(e) {
    var evt = e || window.event;        
    if(evt.keyCode == 13) {
        this.click();
    }
}

function keyUp(e) {
    var evt = e || window.event;  
    if(evt.keyCode == 27) {
        navClose();
    }
}

并将div标签更改为

<div class="SbmtBtnText" tabIndex="3" onkeydown="keyDown();" onkeyup="keyUp();">
  Submit
</div>