e.preventDefault() 不会阻止 CTRL + s 的默认功能,如果它打开一个新选项卡

威廉·麦考尔

我正在编写这段代码,让我可以使用 firefox 插件快速搜索网页上突出显示的文本。我在这里公开托管代码

我捕获按键ctrl+s并进行搜索的功能如下:

document.addEventListener("keydown", function(e) {
// Help came from https://stackoverflow.com/a/14562869/6897392
 if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)){
   text = getSelectionText();
   if(text != ""){
      e.stopImmediatePropagation();
      e.preventDefault();
      console.log(text);
      openInNewTab(searches[default_search]+text);
   }
 }
}, false);

如果我注释掉该openInNewTab(searches[default_search]+text);行,这是以下功能:

function openInNewTab(url) {
// Help came from https://stackoverflow.com/a/11384018/6897392
  var win = window.open(url, '_blank');
  win.focus();
  return false;
}

它会阻止保存对话。但是,如果我保留代码,它将阻止原始选项卡中的保存对话框,但它打开的新选项卡会弹出保存对话框。

我没有找到如何防止保存对话框出现在第二个窗口中的运气,并希望得到一些帮助。

谢谢!

TJ克劳德

如果它真的按照你描述的那样做,这听起来像是 Firefox 中的一个错误,但你应该能够通过非常短暂地延迟你的openInNewTab调用来解决它

document.addEventListener("keydown", function(e) {
// Help came from https://stackoverflow.com/a/14562869/6897392
 if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)){
   text = getSelectionText();
   if(text != ""){
      e.stopImmediatePropagation();
      e.preventDefault();
      console.log(text);
      setTimeout(() => {                                // ***
          openInNewTab(searches[default_search]+text);
      }, 50);                                           // ***
   }
 }
}, false);

Firefox 的弹出窗口阻止程序应该允许它,因为它是在用户启动的事件中安排的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CodeMirror不会阻止Ctrl + T打开新选项卡

来自分类Dev

使Ctrl + t在chrome之外时打开一个新的(chrome)选项卡

来自分类Dev

使Ctrl + t在chrome之外时打开一个新的(chrome)选项卡

来自分类Dev

preventDefault() 不会阻止页面刷新

来自分类Dev

流星-preventDefault不阻止默认

来自分类Dev

JQuery:event.preventDefault() 不会阻止刷新

来自分类Dev

尽管我使用 e.preventDefault(),但选项卡的默认操作不是停止事件

来自分类Dev

preventDefault不会停止默认的鼠标操作

来自分类Dev

e.preventDefault不会停止表单上的重定向

来自分类Dev

使用event.preventdefault()不会阻止ajax返回的表单

来自分类Dev

默认情况下,使用QTabWidget阻止使用Ctrl + Tab的选项卡循环

来自分类Dev

使用preventDefault覆盖打开新选项卡

来自分类Dev

Ctrl-S搜索功能

来自分类Dev

调用e.preventDefault()后触发默认操作

来自分类Dev

对多个事件使用一次e.preventDefault()

来自分类Dev

为什么是 e.preventDefault(); 只工作一次?

来自分类Dev

PreventDefault不阻止表单发送

来自分类Dev

VSCode终端中的“ Ctrl +单击以跟随链接”不会跳转到源文件,而是打开新的浏览器选项卡

来自分类Dev

如果当前选项卡的字段为空,则阻止下一个选项卡

来自分类Dev

nosuid不会阻止chmod u + s

来自分类Dev

CTRL + PrtScr + R + E + I + S + U + B的原因

来自分类Dev

$ ionicPopup:e.preventDefault()被忽略

来自分类Dev

e.preventDefault()导致错误

来自分类Dev

如何阻止用户在另一个选项卡中打开网站?

来自分类Dev

“event.preventDefault()”将阻止的“浏览器默认行为”有哪些示例?

来自分类Dev

如果SQL查询成功,则打开一个新选项卡

来自分类Dev

不能使用ctrl +单击preventDefault并返回false

来自分类Dev

终端Ctrl + s与Ctrl + z

来自分类Dev

链接不会在我的母版的contentPlaceHolder中打开我的页面,而是在一个新选项卡中打开

Related 相关文章

  1. 1

    CodeMirror不会阻止Ctrl + T打开新选项卡

  2. 2

    使Ctrl + t在chrome之外时打开一个新的(chrome)选项卡

  3. 3

    使Ctrl + t在chrome之外时打开一个新的(chrome)选项卡

  4. 4

    preventDefault() 不会阻止页面刷新

  5. 5

    流星-preventDefault不阻止默认

  6. 6

    JQuery:event.preventDefault() 不会阻止刷新

  7. 7

    尽管我使用 e.preventDefault(),但选项卡的默认操作不是停止事件

  8. 8

    preventDefault不会停止默认的鼠标操作

  9. 9

    e.preventDefault不会停止表单上的重定向

  10. 10

    使用event.preventdefault()不会阻止ajax返回的表单

  11. 11

    默认情况下,使用QTabWidget阻止使用Ctrl + Tab的选项卡循环

  12. 12

    使用preventDefault覆盖打开新选项卡

  13. 13

    Ctrl-S搜索功能

  14. 14

    调用e.preventDefault()后触发默认操作

  15. 15

    对多个事件使用一次e.preventDefault()

  16. 16

    为什么是 e.preventDefault(); 只工作一次?

  17. 17

    PreventDefault不阻止表单发送

  18. 18

    VSCode终端中的“ Ctrl +单击以跟随链接”不会跳转到源文件,而是打开新的浏览器选项卡

  19. 19

    如果当前选项卡的字段为空,则阻止下一个选项卡

  20. 20

    nosuid不会阻止chmod u + s

  21. 21

    CTRL + PrtScr + R + E + I + S + U + B的原因

  22. 22

    $ ionicPopup:e.preventDefault()被忽略

  23. 23

    e.preventDefault()导致错误

  24. 24

    如何阻止用户在另一个选项卡中打开网站?

  25. 25

    “event.preventDefault()”将阻止的“浏览器默认行为”有哪些示例?

  26. 26

    如果SQL查询成功,则打开一个新选项卡

  27. 27

    不能使用ctrl +单击preventDefault并返回false

  28. 28

    终端Ctrl + s与Ctrl + z

  29. 29

    链接不会在我的母版的contentPlaceHolder中打开我的页面,而是在一个新选项卡中打开

热门标签

归档