Я использую API-интерфейс chrome.tabs для запуска скрипта при обновлении табуляции (onUpdated) для моего расширения с использованием background.html. Я включил функцию проверки флажка iCheck на странице в скрипте:
$('input').iCheck('check');
Когда скрипт запускается, консоль сообщает мне
Uncaught TypeError: Object [object Object] has no method 'iCheck'
Я попытался включить файл icheck.js в фоновый файл, без успеха. Что я должен делать? Заранее спасибо.
Не совсем уверен, как вы реализуете эту функцию. Я предполагаю, что вы хотите ввести сценарий содержимого ниже, как только вкладка будет обновлена.
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;
Скриншот:
Надеюсь, это полезно.
Вам нужно сделать это из сценария контента не из фона, который не имеет доступа к странице. Следуйте существующим официальным образцам о том, как включить jquery и т.д. В сценарий содержимого.