【问题标题】:Close Browser's find (CTRL + F)关闭浏览器的查找 (CTRL + F)
【发布时间】:2020-10-29 14:08:25
【问题描述】:

我正在创建一个脚本来注册用户在我的网站中制作 CTRF + F 的位置。 为此,我制作了一个代码,每次用户调用浏览器的 find 时都会显示该代码,并将他执行此操作的页面的名称推入一个数组。我的一些页面实际上是选项卡,这意味着当我更改选项卡时浏览器的查找不会自行关闭。 所以我想要一个脚本来在我更改选项卡或页面时关闭浏览器,因为如果不是,即使用户更改选项卡并进行其他研究,浏览器的查找也可以保持打开状态。现在我有这个:

var ctrlf = []; 
var url = '';
window.addEventListener("keydown", (event) => {
url = url_parse();
  if ((event.ctrlKey && (event.key == "f")) || (event.key == "F3")) {
    ctrlf.push(url_parse());
//url_parse is a function to parse the url of the page into a string (see this as the id of a page / tab)
  }
document.addEventListener("click", (event) => {
  if(url != url_parse()){
     var e = new KeyboardEvent('keypress', { 'key': 'Escape' })
     document.dispatchEvent(e)
  }
});

我的想法是模拟 Escape 的按键,但这不起作用。

欢迎任何改进我的代码的想法或关于如何在用户更改选项卡时关闭浏览器的查找的新想法(当用户更改选项卡时仅更改 url 的哈希值)。

谢谢

【问题讨论】:

  • 不,我已经试过了,它不起作用
  • 您能否再描述一下您所说的不工作是什么意思。你是说按键事件不会在点击时触发?另外,您是否看到小写的 f 因为 keydown 事件表示按下了哪个键(而不是结果字符)?
  • 我看到事件已创建(我可以记录它)但浏览器的查找没有关闭,就像我手动按 ESC 键一样

标签: javascript keyboard-shortcuts keypress ctrl


【解决方案1】:

你可以这样做

document.addEventListener("click", (event) => {
  if(url != url_parse()){
     window.close();
  }

这是根据Mozilla Docs

编辑:截至 2020 年,出于安全考虑,大多数现代浏览器不再允许此操作。请访问this link了解更多信息。

【讨论】:

  • 我刚试了,不行,浏览器阻止关闭。我收到警告:“脚本只能关闭它们打开的窗口。”
  • 对不起 - 我发现这只适用于由 javascript 打开的窗口。从this post 开始,我们不能再这样做了。您将不得不打开窗口然后将其关闭。这是最新浏览器中的一项安全功能。
  • 仅供参考,但浏览器的查找是由浏览器直接打开的,而不是通过javascript打开的
  • 可能有一个误解——一个窗口要被javascript关闭,窗口需要被javascript打开。这样更清楚了吗?
  • 是的,我明白了,但是浏览器的查找也不能以这种方式关闭,因为即使它是打开的,它也不总是活动窗口
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
  • 1970-01-01
  • 2012-09-18
  • 2021-09-23
  • 2020-12-16
相关资源
最近更新 更多