首页 > 解决方案 > 根据点击次数运行不同功能的书签

问题描述

是否可以设计一个书签来根据点击次数运行不同的场景?

我尝试在单击和 setTimeout(main, 5000) 时通过 addEventListener 执行此操作,然后在 main() 最终运行时计算 eventListener 的触发次数。它以一种时尚方式起作用,但是这种方法存在两个问题:

  1. 如果将小书签作为网页上的链接调用,则捕获并计算点击次数,但如果单击书签栏,则当然不会。我相信这是无法解决的;当最后一个主函数以某种方式运行时,必须评估点击次数……</p>

  2. 比如说,我点击了小书签 3 次;main() 运行 3 次,间隔 5000 毫秒。如何让它只运行一次?只有最后一个,才能解决#1 中的问题?我这样做的方式太麻烦了,几乎没用,而且还容易赛车。

但主要问题是我觉得我的方法,即使可行,也太笨拙了。我知道我可以使用 prompt() 并让用户输入场景的编号,或呈现菜单并单击所需的场景,但有没有办法仅根据点击次数/片段在给定的时间范围内运行?

标签: javascriptasynchronousdelaybookmarklet

解决方案


检查这是否是您需要的:

javascript: (() => {
  window.bmClicked = window.bmClicked ? window.bmClicked + 1 : 1;

  clearTimeout(window.bmTimeout);

  window.bmTimeout = setTimeout(() => {
    console.log('window.bmClicked: ', window.bmClicked);

    window.bmClicked === 1 && functionOne();
    window.bmClicked === 2 && functionTwo();
    window.bmClicked === 3 && functionThree();

    window.bmClicked = null;
  }, 500);

  function functionOne() {
    console.log('functionOne');
  }

  function functionTwo() {
    console.log('functionTwo');
  }

  function functionThree() {
    console.log('functionThree');
  }
})();


推荐阅读