javascript - 无法使用 setTimout 在小书签中不起作用

标签 javascript bookmarklet

我可以不在书签中使用setTimeout()吗?

这有效: javascript: document.location="mysite.com"; 警报(“测试”); 无效;

这不会: javascript: document.location="mysite.com"; var t=setTimeout(函数() { 警报(“测试”); }, 10000); 无效;

这是为什么?

最佳答案

每次更改页面时,整个 javascript 上下文都会被销毁并重新创建(这是出于安全原因以及会造成上下文 hell 的事实)

document.location="mysite.com";

有效地改变页面的上下文,破坏任何剩下的 javascript 引用(在你的情况下是超时)。新页面开始加载时,您的页面就有了新的上下文。

要使超时生效,您需要一个需要 10 秒以上响应的服务器(基于您的第二个参数 10000 或将超时减少到 10 毫秒左右)。

document.location="mysite.com"; 
var t=setTimeout(function () { alert("test"); }, 10);

你为什么需要这个?

关于javascript - 无法使用 setTimout 在小书签中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197994/

相关文章:

javascript - 通过一次表单提交将多个文件上传到一个文件夹中

javascript - 为什么输出中没有出现字符串 "nullfalse"?

javascript - 使用 node.js 处理内容类型 application/json 的服务器响应

javascript - 使用 javascript 启用和禁用复选框

javascript - 如何将 javascript 书签设置为主页?

javascript - 小书签不更改文本框中的文本

javascript - 尝试使用javascript更改音频标签的src

javascript - 提交表单后关闭书签

javascript - 用小书签替换当前 URL 的结束字符

javascript - 使用 cufon/sifr 时如何允许用户选择文本?