URL*_*L87 2 javascript google-chrome google-chrome-extension
在我阅读了关于Event Page的文档后,我没有得到使用 Event Page 而不是 Background Page 的优势。
假设我有以下简单案例 -
清单文件
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
]
Run Code Online (Sandbox Code Playgroud)
内容.js
chrome.runtime.sendMessage("Hi Background")
Run Code Online (Sandbox Code Playgroud)
背景.js
chrome.runtime.onMessage.addListener(messageListener);
function messageListener (request, sender, sendResponse) {
alert(request);
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,无论persistent
是"persistent": false
还是 中"persistent": true
的侦听器background.js
都应该始终处于唤醒状态,以便从 中获取消息content.js
,因此background.js
无法进入挂起模式。
那么"persistent": true
在这种情况下和一般情况下,事件页面 ( ) 有什么好处?请举例说明。
事件页面的主要优点是在不使用时通过卸载后台脚本来释放 RAM 和 CPU 资源。
...background.js 无法进入挂起模式。
它可以。即使您的事件页面使用消息侦听器,它仍会在一段时间后卸载。Chrome 记得页面已经设置了监听器,所以浏览器会在发送消息时唤醒页面。
你可以试试这个实验:
清单文件
{
"manifest_version": 2,
"name": "Test",
"version": "0.0.1",
"description": "",
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_popup": "popup.html"
}
}
Run Code Online (Sandbox Code Playgroud)
背景.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
sendResponse({
msg: "it's alive!"
});
}
);
Run Code Online (Sandbox Code Playgroud)
弹出窗口.html
<html>
<body>
<div id="text"></div>
<script src="popup.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
弹出窗口.js
chrome.runtime.sendMessage('hello',
function (response) {
document.getElementById('text').textContent = response.msg;
}
);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
807 次 |
最近记录: |