Как включить iCheck в фоновую страницу?

0

Я использую API-интерфейс chrome.tabs для запуска скрипта при обновлении табуляции (onUpdated) для моего расширения с использованием background.html. Я включил функцию проверки флажка iCheck на странице в скрипте:

$('input').iCheck('check');

Когда скрипт запускается, консоль сообщает мне

Uncaught TypeError: Object [object Object] has no method 'iCheck'

Я попытался включить файл icheck.js в фоновый файл, без успеха. Что я должен делать? Заранее спасибо.

Теги:
google-chrome-extension
icheck

2 ответа

0
Лучший ответ

Не совсем уверен, как вы реализуете эту функцию. Я предполагаю, что вы хотите ввести сценарий содержимого ниже, как только вкладка будет обновлена.

iCheck.js

//I used polaris skin here
$("input").iCheck({
  checkboxClass: 'icheckbox_polaris',
  radioClass: 'iradio_polaris'
});

Сначала вам нужно включить нужную библиотеку для "iCheck", такую как jQuery, iCheck.min.js и т.д. Определите шаблоны сопоставления URL-адресов в файле манифеста, а скрипт содержимого будет введен на страницу, если его URL-адрес соответствует любому шаблону,

manifest.json

"content_scripts":[
{
  "matches":["https://*/*","http://*/*"],
  "js":["js/jquery-1.9.1.js","js/iCheck.min.js"],
  "css":["css/polaris/polaris.css"]
}
]

В iCheck скин использует внешний ресурс изображения, и вам нужно указать их как доступную в Интернете, если вы хотите использовать их в контексте веб-страницы.

"web_accessible_resources": [
  "css/polaris/*"
]

А затем зарегистрируйте обработчик события обновления вкладки в background.js, который будет вводить скрипт содержимого "iCheck.js".

background.js

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
  if (changeInfo.status == 'complete' && tab.active) {
    chrome.tabs.executeScript(null,{file:"iCheck.js"}); 
  }
});

Поскольку polaris.css использовал относительный url для включения спрайта значков, мы должны использовать абсолютный URL ресурса расширения для доступа к изображениям.

//replace this
background: url(polaris.png) no-repeat;

//with...
background: url(chrome-extension://your extension id/path/to/resource/polaris.png) no-repeat;

Скриншот:

Изображение 174551

Надеюсь, это полезно.

0

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

  • 0
    где те официальные образцы, которые вы упоминаете?
  • 0
    Вы гуглили «расширение jquery chrome»? Это также в официальных документах.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню