我正在尝试在firefox中的bookmarklet中运行一些JS代码。以下是一些证明要点的基本代码:
window.setTimeout(function(){alert('i ran');},1000);
当我在其中运行带有setTimeout的代码时,我将整个页面替换为通常在控制台中记录的计数器值。
有没有办法捕获这个输出并阻止这种情况发生?
谢谢!
答案 0 :(得分:5)
尝试以下方法:
javascript:(window.setTimeout(function() { alert('i ran'); }, 1000));void(0);
答案 1 :(得分:2)
当您在地址栏中使用javascript:
协议时(这是所有bookmarklet所做的),浏览器会对document.write
执行任何返回值,如果它是真的那么。
setTimeout
调用始终返回计时器的数字。要解决此问题,您可以附加void(0);
类似纪元或我喜欢的内容,将其包装在IIFE中:
(function() {
window.setTimeout( function() {alert('i ran');}, 1000 );
})();