Chrome.tabs.captureVisibleTab总是失败,直到我点击弹出窗口

des4xlb0  于 2024-01-04  发布在  Go
关注(0)|答案(1)|浏览(443)

Chrome.tabs.captureVisibleTab()总是返回失败的消息,直到我点击弹出窗口。
在后台的错误信息中,它说:
错误:需要“<all_urls>”或“activeTab”权限。
实际上,我添加了“activeTab”权限。
奇怪的是,点击弹出页面后,一切都很好。
content_script.js:

  1. let btn = document.createElement("button")
  2. btn.innerText="screen cap"
  3. document.body.appendChild(btn)
  4. btn.onclick=(e)=>{
  5. chrome.runtime.sendMessage({purpose:"screenCap"})
  6. }
  7. chrome.runtime.onMessage.addListener((msg)=>{
  8. if(msg.purpose && msg.purpose==="screenCap" ){
  9. if(msg.status) {
  10. console.log(msg.data)
  11. }
  12. else{
  13. console.log("screen cap failed")
  14. }
  15. }
  16. })

字符串
background.js

  1. chrome.runtime.onMessage.addListener(
  2. (msg)=>{
  3. if(msg.purpose && msg.purpose === "screenCap"){
  4. chrome.tabs.captureVisibleTab().then(
  5. (data)=>{ }
  6. )
  7. }
  8. }
  9. )


manifest.json

  1. {
  2. "manifest_version": 3,
  3. "name": "screen cap test",
  4. "version": "1.0.1",
  5. "action": { "default_popup": "popup.html" },
  6. "content_scripts": [{
  7. "js": [
  8. "content.js"
  9. ],
  10. "matches": [
  11. "http://*/*", "https://*/*"
  12. ]
  13. }],
  14. "background": {
  15. "service_worker": "background.js",
  16. "persistent": true
  17. },
  18. "externally_connectable": {
  19. "matches": ["*://*.google.com/*"]
  20. },
  21. "permissions": [
  22. "activeTab",
  23. "tabs",
  24. "notifications",
  25. "storage"
  26. ],
  27. "web_accessible_resources": [{
  28. "matches": [
  29. "<all_urls>"
  30. ],
  31. "resources": [
  32. "**/*",
  33. "*"
  34. ],
  35. "use_dynamic_url": true
  36. }]
  37. }


popup.html

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. </head>
  7. <body>
  8. <h1>hello world</h1>
  9. </body>
  10. </html>


download runable code sample

tzcvj98z

tzcvj98z1#

拥有“activeTab”权限并不意味着扩展自动接收当前活动选项卡的临时主机权限。
用户还必须通过执行以下操作之一来调用扩展:https://developer.chrome.com/docs/extensions/mv3/manifest/activeTab/#invoking-activeTab

  • 执行动作
  • 执行上下文菜单项
  • 从命令API执行键盘快捷键
  • 接受来自omnibox API的建议

https://developer.chrome.com/docs/extensions/mv3/manifest/activeTab/
当用户调用扩展(例如通过单击其操作)时,activeTab权限使扩展可以临时访问当前活动的选项卡。当用户在该页面上时,对选项卡的访问将持续,当用户导航离开或关闭选项卡时,对选项卡的访问将被撤销。
https://developer.chrome.com/docs/extensions/reference/tabs/#perms
“activeTab”权限
activeTab为当前选项卡赠款扩展临时主机权限以响应用户调用。与主机权限不同,activeTab不会触发任何警告。

相关问题