Запускать контентный скрипт каждый раз, когда страница загружается с помощью Google Extensions? - PullRequest
1 голос
/ 15 ноября 2011

Я делаю расширение для Google Chrome. Мое расширение в настоящее время расширяет область содержимого и заголовок, чтобы освободить место для другого значка в контейнере для драгоценностей (где находятся уведомления и запросы друзей) и добавляет значок. Он отлично работает при первой загрузке страницы, но когда вы переходите на другую страницу сайта и затем возвращаетесь домой, макет облажается.

Поскольку это не проблема с кодом (так как он работает нормально при первой загрузке страницы), я хотел бы знать, есть ли способ запускать скрипт содержимого каждый раз при загрузке страницы. Возможно ли это, или я могу вставить свой JavaScript в Facebook каждый раз, когда он загружается другим способом?

Ответы [ 3 ]

1 голос
/ 16 ноября 2011

Насколько я понимаю, ваш код правильно вводится каждый раз при загрузке страницы, но когда пользователь выбирает другую вкладку, а затем возвращает, вам нужен код для повторного запуска?API видимости .Вы можете прослушать событие visibilitychange и снова запустить свой код.

0 голосов
/ 28 ноября 2011

Вы должны добавить скрипт в качестве скрипта контента в файл манифеста.Фоновые страницы выполняются только один раз за сеанс браузера.

Манифест:

{
  "name": "",
  "version": "",
  "description": "",
  "icons": { "16": "icon16.png",
           "48": "icon48.png",
           "128": "icon128.png"},
  "content_scripts": [
    {
      "matches": ["<all_urls>"],
      "js": ["go.js"],
      "all_frames":true
    }
  ],
  "permissions": [
    "*://*/*"
  ]
}

Файл сценария содержимого (go.js):

// your stuff

PS: этот метод нене работает на внутренних страницах Chrome ...

0 голосов
/ 28 ноября 2011

Я нашел способ обойти это, используя setInterval() для запуска кода (или, по крайней мере, кода, который не всегда выполнялся) каждую миллисекунду.

Очевидно, что, если я неправильно понял, Chrome запускаетсякод один раз за сеанс браузера, поэтому использование setInterval() является лучшей альтернативой.Тем не менее, странное поведение заключалось в том, что Chrome выполнял часть моего кода один раз, а потом не после этого, если не были соблюдены определенные обстоятельства.

setInterval() в этом случае, однако, творили чудеса.

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