如何在 Firefox 扩展中睡觉旧的和本机 JS 方法不起作用?

问题描述

我试过了

let { setTimeout } = require('sdk/timers');
browser.webNavigation.onCompleted.addListener(setTimeout(resetSpeed,3000));
browser.webNavigation.onHistoryStateUpdated.addListener(setTimeout(resetSpeed,3000));
(...)

没用。另一个尝试:

browser.webNavigation.onCompleted.addListener(resetSpeed);
browser.webNavigation.onHistoryStateUpdated.addListener(resetSpeed);

function resetSpeed() {
  await new Promise(r => setTimeout(r,2000)); 
(...)

那也没有用。

如果没有睡眠功能,我的代码用于在页面加载时自动加速音频/视频,大约有 25% 的时间有效,而当我使用自定义按键组合运行它时,则为 100%。我想添加睡眠功能以使其达到 100%,因为我认为它运行得太快了。

我的权限:

  "permissions": [
    "contextMenus","tabs","<all_urls>","http://*/*","https://*/*","file:///*/*","webNavigation"
  ]

解决方法

没关系。添加异步修复了它。

browser.webNavigation.onCompleted.addListener(resetSpeed);
browser.webNavigation.onHistoryStateUpdated.addListener(resetSpeed);

async function resetSpeed() {
  await new Promise(r => setTimeout(r,2000)); 
(...)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...