我正在编写这段代码,让我可以使用 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;
}
它会阻止保存对话。但是,如果我保留代码,它将阻止原始选项卡中的保存对话框,但它打开的新选项卡会弹出保存对话框。
我没有找到如何防止保存对话框出现在第二个窗口中的运气,并希望得到一些帮助。
谢谢!
如果它真的按照你描述的那样做,这听起来像是 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] 删除。
我来说两句