Javascript chrome.runtime.reload阻止扩展
所以,我正在为webpack开发一个插件,用于热重新加载chrome扩展。 最大的问题是,如果我多次调用“chrome.runtime.reload()”,这将使chrome阻止扩展:Javascript chrome.runtime.reload阻止扩展,javascript,google-chrome-extension,google-chrome-app,chrome-runtime,Javascript,Google Chrome Extension,Google Chrome App,Chrome Runtime,所以,我正在为webpack开发一个插件,用于热重新加载chrome扩展。 最大的问题是,如果我多次调用“chrome.runtime.reload()”,这将使chrome阻止扩展: This extension reloaded itself too frequently. 在一次电话会议上,他们说,如果你在10秒的时间内呼叫重新加载超过5次,你的分机将被阻塞。 问题是,我已经限制了大量的重新加载(比如每5秒最多调用1次),但这种情况仍然在发生。我查了很多文件。但是没有发现任何与此相关的东
This extension reloaded itself too frequently.
在一次电话会议上,他们说,如果你在10秒的时间内呼叫重新加载超过5次,你的分机将被阻塞。
问题是,我已经限制了大量的重新加载(比如每5秒最多调用1次),但这种情况仍然在发生。我查了很多文件。但是没有发现任何与此相关的东西,所以我有点不知所措
所以这真的有一个阈值,或者你只能在运行时重新加载一个固定的次数后,它才能阻止扩展
更新:
为了解决这个问题,我已经为Chromium团队请求了一个新特性。如果任何人有相同的问题,请在此功能请求上给出一个星号:)当达到阈值(即快速连续重新加载5次)时,您必须等待至少10秒钟,计数器才会重置,扩展才能安全地重新加载 (修剪代码以强调相关逻辑):
std::配对并重新加载\u信息=
上次重新加载时间[扩展id];
base::TimeTicks now=base::TimeTicks::now();
if(重新加载\u info.first.is\u null()||
(现在-reload_info.first).inmillizes()>kFastReloadTime){
重新加载信息秒=0;
}否则{
重新加载_info.second++;
}
// ....
重新加载_info.first=现在;
扩展服务*服务=
ExtensionSystem::Get(浏览器上下文)->扩展服务();
如果(重新加载信息秒>=kFastReloadCount){
// ....
base::ThreadTaskRunnerHandle::Get()->PostTask(
从这里开始,base::BindOnce(&ExtensionService::TerminateExtension),
服务->AsWeakPtr(),扩展_id));
扩展::警告集警告;
警告。插入(
扩展::警告::CreateReloadtoFrequentWarning(
扩展(id));
定义了kFastReloadTime
和kFastReloadCount
后:
//如果扩展在重新加载的毫秒内重新加载自身
//就其本身而言,重新加载速度令人怀疑。
常数int kFastReloadTime=10000;
//在如此多的速度令人怀疑的连续重新加载之后,扩展将
//残疾人。
常数int kFastReloadCount=5;
我认为你误解了以前的讨论。它实际上是说,如果你在扩展启动后的10秒内重新加载,而不是在10秒内重新加载5次。因此,如果你确保等待超过10秒才开始,那么你应该没事。好吧,即使在10秒之后,结果也是一样的e same:(我在开始调用运行时重新加载后等了大约一分钟,在第六次调用中,它被阻止了。因此,它似乎是一个固定的“魔法”数字,没有在任何文档中描述。这太糟糕了。我知道Rob W在以前的讨论中回答了这个问题,他是此类问题的最佳来源,所以也许可以直接给他发送消息?