javascript - 根据点击次数运行不同功能的书签
问题描述
是否可以设计一个书签来根据点击次数运行不同的场景?
我尝试在单击和 setTimeout(main, 5000) 时通过 addEventListener 执行此操作,然后在 main() 最终运行时计算 eventListener 的触发次数。它以一种时尚方式起作用,但是这种方法存在两个问题:
如果将小书签作为网页上的链接调用,则捕获并计算点击次数,但如果单击书签栏,则当然不会。我相信这是无法解决的;当最后一个主函数以某种方式运行时,必须评估点击次数……</p>
比如说,我点击了小书签 3 次;main() 运行 3 次,间隔 5000 毫秒。如何让它只运行一次?只有最后一个,才能解决#1 中的问题?我这样做的方式太麻烦了,几乎没用,而且还容易赛车。
但主要问题是我觉得我的方法,即使可行,也太笨拙了。我知道我可以使用 prompt() 并让用户输入场景的编号,或呈现菜单并单击所需的场景,但有没有办法仅根据点击次数/片段在给定的时间范围内运行?
解决方案
检查这是否是您需要的:
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');
}
})();
推荐阅读
- reverse-engineering - 有没有办法在 IDA 伪代码视图中显示十六进制表示而不是十进制?
- sql - 如何在 SELECT 语句中重用子查询的结果
- c# - SQL Server / EF:跟踪人员的预期出勤率
- javascript - SharePoint 2013 JSLink OnPostRender 在添加 SP.SOD.executeFunc 后不起作用
- xslt - 寻找 Domino XSL 帮助尝试查找颜色设置为蓝色的字段
- javascript - 在javascript上获取“未捕获的TypeError:无法读取未定义的属性'top'”
- android - 如何在不滚动到第一项的情况下更新嵌套的 RecyclerView
- sql - SQL查询一口气拉出所有数据库表结构?
- javascript - 在没有 .catch 的情况下创建可重用的 Promise
- php - 在通过 php 下载之前为生成的 zip 文件添加注释