javascript - Javascript 代码每 10 分钟运行一次并在加载后关闭调用的窗口
问题描述
我想要一个可以每 10 分钟打开一次链接并在选项卡完全加载后关闭打开的选项卡的 javascript,我尝试了以下代码并且它工作正常,但是选项卡会立即关闭,想要在它完全加载后关闭它。
var mywindow;
setInterval(function() {
mywindow = window.open("https://www.google.com");
mywindow.close();
}, 2000);
解决方案
如果页面位于不同的域中,您将无法侦听要加载的页面,除非您可以在该其他域上运行脚本。在您不拥有的页面上执行此类操作的唯一方法是让用户拥有一个允许该功能的浏览器扩展程序,例如 Tampermonkey,并使用以下用户脚本:
// ==UserScript==
// @name Close Google
// @match https://www.google.com
// @grant none
// ==/UserScript==
// this will run automatically once the DOM is loaded
window.close();
但是要求脚本的每个用户都这样做并不是很合理 - 另一种方法是简单地等待一段时间,一秒钟或几秒钟,以确保页面已加载,然后.close()
:
setInterval(function () {
const newWindow = window.open("https://www.google.com");
setTimeout(() => {
newWindow.close();
}, 3000);
}, 10 * 60_000);
如果您希望链接每 10 分钟打开一次,请传递10 * 60_000
给外部setTimeout
,而不是2000
.
推荐阅读
- python - gnupg python解密和加密使用内存而不是磁盘空间
- javascript - 我怎样才能取值在 *ngfor?
- arrays - 选择最多时间时如何重新排列集合视图单元格
- asp.net - 如何从任何类型的数据库(pdf、xlx、jp 或 png)中检索文件并使其可在网页上下载?
- php - CORS 策略已阻止访问 XMLHttpRequest - Laravel 5.8
- haskell - 我得到错误:非常简单的 Haskell 代码的变量不在范围内
- javascript - 必填字段检查无法正常工作
- c - 是否可以在 C99 (gcc/clang) 中使用 __asm 作为 lambda 表达式
- javascript - Javascript - 乘以 100 后特定数字的奇怪小数
- event-handling - 如何使用 asyncio 管理任务的动态列表