Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript chrome.runtime.reload阻止扩展_Javascript_Google Chrome Extension_Google Chrome App_Chrome Runtime - Fatal编程技术网

Javascript chrome.runtime.reload阻止扩展

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次),但这种情况仍然在发生。我查了很多文件。但是没有发现任何与此相关的东

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

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在以前的讨论中回答了这个问题,他是此类问题的最佳来源,所以也许可以直接给他发送消息?