簡體   English   中英

返回false后也不會顯示警報框

[英]Alert box doesn't show even after return false

看到代碼:

area.onkeydown = function(e){
    e = e || window.event;

    if(e.shiftKey && e.keyCode === 32){
        e.preventDefault();
        e.stopPropagation();
        e.stopImmediatePropagation();

        // no alert here

        return false;
    }
};

在這里,代碼有效,並且在按下Shift + Space時不會插入空格。 但是,一旦我插入alert ,它就無法工作,即插入了空格,警報框也沒有顯示。

area.onkeydown = function(e){
    e = e || window.event;

    if(e.shiftKey && e.keyCode === 32){
        e.preventDefault();
        e.stopPropagation();
        e.stopImmediatePropagation();

        alert("typed"); // this alert doesn't show
        return false; // and space also gets insrted
    }
};

小提琴

我想念什么?

更新:

  1. 使用onkeyup將顯示警報,但是會插入空格。
  2. 使用onkeypress不會插入空格,但是只要按鍵保持按下狀態,警報就會保留。

因此,我想我沒有辦法使它正常工作。 正如Teemu所說

在您的撥弄下,該代碼段可以使用或不使用alert()而無需在IE11(Win7)中打印空格。 FF失去了preventDefault()行為,盡管我可以看到警報。 在Chrome35中,警報僅在屏幕上閃爍,並且已打印空格。 (如果刷新速度足夠快,您的情況是?) IE使用OS窗口顯示警報,其他瀏覽器也有自己的實現,這似乎使事件處理混亂。

更新:我投票結束這個問題為離題,因為在最新的Chrome版本中,該問題不再能夠按照描述的方式重現。 現在按Shift + Space將顯示警報框,但不會插入任何空格。

我已將您的keydown更改為keyup

看到這個

area.onkeyup = function(e){}

嘗試使用onkeypress而不是onkeydown

使用Keyup而不是keydown的原因如下:

 area.onkeyup = function(e){

演示版

按鍵

當用戶首次按下鍵盤上的鍵時,keydown事件將發送到一個元素。 它可以附加到任何元素,但是事件僅發送到具有focus的元素。 在瀏覽器之間 ,可聚焦元素可以有所不同 ,但是表單元素可以始終獲得焦點,因此是此事件類型的合理候選對象。

鍵盤輸入

當用戶釋放鍵盤上的鍵時,keyup事件將發送到一個元素。 它可以附加到任何元素,但是事件僅發送到具有focus的元素。 在瀏覽器之間,可聚焦元素可以有所不同,但是表單元素可以始終獲得焦點,因此是此事件類型的合理候選對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM