答案 0 :(得分:2)
对于您的第一个问题,是的,可以这样做。它将在后台(和隐藏)页面中执行您的重度处理。带有内容脚本的页面不会以这种方式冻结。
你可以这样做:
在后台脚本中:
function heavyStuff(request, sender, sendResponse)
{
...
doSomeThing(request)
doOtherThing()
...
sendResponse(youreSmallerArray)
}
chrome.runtime.onMessage.addListener(heavyStuff)
在您的内容脚本中:
function manageResponse(smallerArray)
{
...
doWhatYouWant(smallerArray)
...
}
arrayOfP = $("p")
chrome.runtime.sendMessage(arrayOfP, manageResponse)
所以它会做你想要的,但你确定你在做什么吗?也许你的算法必须改进?
有关Chrome消息系统的详细信息,请参阅documentation。
特别是如果您必须发送大量消息,请查找长期连接部分。
对于第二个问题,您可以在清单中替换背景页面属性:
"background":
{
"scripts":
[
"background.js",
"otherScript.js",
....
"theLastScript.js"
]
}
Chrome会自动创建一个包含此脚本的背景页面(按相同顺序)。
PS:下次您在本网站发帖时,请一次只询问一个问题; - )