Chrome Расширение не вводит скрипт содержимого после перенаправления - PullRequest
0 голосов
/ 05 мая 2020

Я разрабатываю расширение Chrome, которое взаимодействует с Twitter и вводит сценарий содержимого, когда пользователь посещает twitter.com/home. Я объявил content_scripts в manifest. json, и на twitter.com/home все работает нормально. Однако, когда я захожу на twitter.com, он перенаправляется на twitter.com/home, а расширение не внедряет скрипт содержимого. Добавление «twitter.com» в список «совпадений» в манифесте. json решает проблему, но я хочу, чтобы расширение вставляло скрипт только при загрузке twitter.com/home. Я подумываю об использовании webNavigation API для обнаружения перенаправлений, но мне интересно, есть ли более эффективные способы для этого. Спасибо!

манифест. json

  "name": "xxx",
  "version": "1.0",
  "description": "abc",
  "permissions": [
    "activeTab",
    "declarativeContent",
    "storage"
  ],
  "content_scripts": [
    {
      "matches": ["https://twitter.com/home", "https://twitter.com/"],
      "run_at": "document_idle",
      "js": ["script.js"]
    }
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "manifest_version": 2
}

1 Ответ

0 голосов
/ 05 мая 2020

Twitter загружает страницу через ajax, а не перезагружает страницу. таким образом, когда вы щелкаете элементы на странице, содержимое страницы изменяется, URL изменяется. но страница на самом деле не перезагружается, поэтому ваши сценарии содержимого не работают.

сделайте следующее: измените matches на https://twitter.com/*. это заставит сценарии содержимого внедряться на все страницы твиттера.

в вашем сценарии содержимого script.js, вам нужно добавить несколько logi c, чтобы определить, находится ли пользователь на странице home. поскольку страница не перезагружается, вам нужно использовать что-то вроде MutationObserver , чтобы обнаружить изменение содержимого страницы (например, если выделена ссылка home). чтобы ваш сценарий знал, что текущая страница - это home страница, и делал то, что вы хотите сделать.

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