Всплывающее окно с расширением Chrome в действии страницы - PullRequest
0 голосов
/ 13 января 2019

Я немного запутался с расширением браузера Chrome и действиями на странице. Моя цель - иметь всплывающее окно для конкретной страницы.

manifest.json:

    {
      "name": "Basic extention",
      "version": "1.0",
      "description": "Extention",
      "permissions": [
        "activeTab", 
        "declarativeContent", 
        "storage",
        "tabs",
        "*://www.google.com/*"  ],  
      "background": {
        "scripts": ["background.js"],
        "persistent": false
      },  
      "page_action": {
        "default_popup": "popup.html",
        "default_icon": {
          "16": "images/icon16.png",
          "32": "images/icon32.png",
          "48": "images/icon64.png",
          "128": "images/icon128.png"
        }
      },
      "icons": {
        "16": "images/icon16.png",
        "32": "images/icon32.png",
        "48": "images/icon64.png",
        "128": "images/icon128.png"
      },
      "manifest_version": 2
    }

background.js:

'use strict';

chrome.runtime.onInstalled.addListener(function() {

  chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
    chrome.declarativeContent.onPageChanged.addRules([{
      conditions: [new chrome.declarativeContent.PageStateMatcher({
        pageUrl: {hostEquals: 'https://www.google.com/*'},
      })],
      actions: [new chrome.declarativeContent.ShowPageAction()]
    }]);
  });
}); 

popup.html

<!DOCTYPE html>
<html>
  <head>
    <style>
      body{
        background-color: green;
      }
    </style>      
    <title>Test extention</title>
  </head>
  <body>  
    Test
  </body>
</html>

Вот проблема:

  • Если я использую browser_action в манифесте, он работает как положено. Всплывающее окно отображается после нажатия на значок расширения.

  • Но когда я изменяю его на page_action, всплывающее окно больше не отображается. (Щелчок левой кнопкой мыши открывает то же меню, что и щелчок правой кнопкой мыши, вместо отображения моего всплывающего окна.)


Нужно ли как-то вручную запускать всплывающее окно? Я пропускаю некоторые разрешения в манифесте? Буду признателен за любую помощь или советы.

1 Ответ

0 голосов
/ 13 января 2019

Вы неправильно определили условие для hostEquals. Его следует разделить между hostEqual и scheme следующим образом:

pageUrl: { hostEquals: 'www.google.com', schemes: ['https'] }

После этого он должен работать как определено Взгляните на раздел правил в https://developer.chrome.com/extensions/declarativeContent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...