javascript - chrome.runtime.reload 阻止扩展

标签 javascript google-chrome-extension

因此,我正在为 webpack 开发一个插件,用于热重载 chrome 扩展。 最大的问题是,如果我调用“chrome.runtime.reload()”一定次数,这将使 Chrome 阻止扩展:

This extension reloaded itself too frequently.

old discussion 上他们说,如果您在 10 秒的时间内调用重新加载超过 5 次,您的分机将被阻止。 问题是,我已经大大限制了重新加载(比如每 5 秒最多调用 1 次)并且这种情况仍在发生。我在文档上搜索了很多。但没有找到与此相关的任何内容,所以我有点一头雾水。

所以这真的有一个阈值,或者您只能在阻止扩展之前调用运行时重新加载固定次数?

更新: 为了解决这个问题,我为 Chromium 团队申请了一项新功能,Let disable the "Fast Reload" blocking for unpacked extensions .如果有人有同样的问题,请给这个功能请求一个星:)

最佳答案

当达到阈值时(即快速连续重新加载 5 次),您必须至少等待 10 秒,计数器才会重置,扩展程序才能安全地重新加载。

Source ( trim 代码以强调相关逻辑):

  std::pair<base::TimeTicks, int>& reload_info =
      last_reload_time_[extension_id];
  base::TimeTicks now = base::TimeTicks::Now();
  if (reload_info.first.is_null() ||
      (now - reload_info.first).InMilliseconds() > kFastReloadTime) {
    reload_info.second = 0;
  } else {
    reload_info.second++;
  }

  // ....

  reload_info.first = now;
  ExtensionService* service =
      ExtensionSystem::Get(browser_context_)->extension_service();
  if (reload_info.second >= kFastReloadCount) {
    // ....
    base::ThreadTaskRunnerHandle::Get()->PostTask(
        FROM_HERE, base::BindOnce(&ExtensionService::TerminateExtension,
                                  service->AsWeakPtr(), extension_id));
    extensions::WarningSet warnings;
    warnings.insert(
        extensions::Warning::CreateReloadTooFrequentWarning(
            extension_id));

定义了kFastReloadTimekFastReloadCount here :

// If an extension reloads itself within this many miliseconds of reloading
// itself, the reload is considered suspiciously fast.
const int kFastReloadTime = 10000;
// After this many suspiciously fast consecutive reloads, an extension will get
// disabled.
const int kFastReloadCount = 5;

关于javascript - chrome.runtime.reload 阻止扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522301/

相关文章:

javascript - 使用 iCheck 回调和 jquery 从列表中删除项目

javascript - 允许特定产品代码、提醒并删除重复项

javascript - 前几次浏览器执行 setTimeout() 的时间不到 4 毫秒

javascript - 我的照片 slider "owl carousel"将照片放在彼此下面?

google-chrome-extension - 当页面操作有弹出窗口时如何判断页面操作被单击

javascript - 如何指定 Ionic 功能的外观风格?

google-chrome-extension - 在元素面板中聚焦项目的 Chrome 扩展

javascript - chrome 扩展删除脚本标签

javascript - 显示书签图标

javascript - 使用端口和长期消息传递的Background.js到content.js