Javascript Bookmarklet可根据单击的时间运行不同的功能
是否可以设计一个bookmarklet,根据单击的次数运行不同的场景 我试图通过单击addEventListener和setTimeout(main,5000)来实现这一点,然后在main()最终运行时计算EventListener的触发次数。它以某种方式工作,但这种方法存在两个问题:Javascript Bookmarklet可根据单击的时间运行不同的功能,javascript,asynchronous,delay,bookmarklet,Javascript,Asynchronous,Delay,Bookmarklet,是否可以设计一个bookmarklet,根据单击的次数运行不同的场景 我试图通过单击addEventListener和setTimeout(main,5000)来实现这一点,然后在main()最终运行时计算EventListener的触发次数。它以某种方式工作,但这种方法存在两个问题: 如果bookmarklet作为网页上的链接调用,则会捕获并计算单击次数,但如果单击书签栏,则不会。我相信这是无法解决的;当最后一个主功能以某种方式运行时,必须计算单击次数 比如说,我点击了书签3次;main()
但主要的问题是,我觉得我的方法,即使可行,也太笨拙了。我知道我可以使用,比如说,prompt(),让用户输入场景的编号,或者呈现菜单并单击所需场景,但是有没有一种方法可以简单地根据给定时间范围内的单击次数/代码段运行次数来实现这一点?检查这是否是您需要的:
javascript:(()=>{
window.bmClicked=window.bmClicked?window.bmClicked+1:1;
clearTimeout(window.bmTimeout);
window.bmTimeout=setTimeout(()=>{
log('window.bmClicked:',window.bmClicked);
window.bmClicked==1&&functionOne();
window.bmClicked==2&&functionTwo();
window.bmClicked==3&&functionThree();
window.bmClicked=null;
}, 500);
函数functionOne(){
console.log('functionOne');
}
函数functionTwo(){
log('functionTwo');
}
函数三(){
log('functionThree');
}
})();
请将书签的代码添加到问题中,否则很难找出问题所在。我想我从中学到了比一周的实验更多的东西。非常感谢,非常好。