Chrome 확장 프로그램이 있으며 매니페스트와 배경 스크립트로 삽입 된 2 개의 콘텐츠 스크립트가 있습니다.콘텐츠 스크립트 동적로드 (크롬 확장)
{
"manifest_version": 2,
"name": "Test",
"permissions": [
"tabs", "<all_urls>", "activeTab", "storage"
],
"content_scripts": [
{
"matches": ["http://*/*", "https://*/*"],
"js": [
"content/autofill/lib_generic.js",
"content/autofill/lib.js"],
"run_at": "document_end"
}
],
"web_accessible_resources": [
"content/specific_scripts/*"
],
"background": {
"scripts": ["background.js"],
"persistent": false
}
}
lib_generic.js
apply_forms(...)
가 명명 한 함수를 포함하는 (그 설명은 중요하지 않다). 이 함수는 lib.js
파일에서 호출됩니다. 그러나이 절차는 여러 페이지에서 작동하지 않으므로 각각의 해당 페이지에 대해 특수 스크립트가 있습니다. apply_forms(...)
이라는 단 하나의 함수도 있습니다.
나는 현재 도메인을 입력으로 사용하고 원하는 특정 스크립트의 이름을 반환하거나 generic을 사용해야하는 경우 false
을 반환하는 함수가 있습니다.
파일이 너무 많아서 논리가 복잡하기 때문에 "content_scripts"
지시문에 모두 (url, script)
쌍을 나열 할 수는 없습니다 (모든 특정 파일을 내용 스크립트로 삽입하고 싶지는 않습니다). 나는 배경이 뭔가를 시도했습니다
(단지 데모 용의 점에 유의) :
var url = ""; //url of current tab
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if(changeInfo.status == "complete") {
var filename = getSpecificFilename(url);
chrome.tabs.executeScript(tabId, {file: filename}, function() {
//script injected
});
}
});
참고 : getSpecificFilename (...)는 항상 이름
를 반환하지만 것입니다 내가 할 Unchecked runtime.lastError while running tabs.executeScript: Cannot access a chrome:// URL
5 라인에.
아무도 도와 줄 수 있습니까? 그것은이 "override` 함수 정의 동적으로 좋은 방법인가, 아니면 (다음 어느 하나) 다른 길을 가야한다. 당신이 onUpdated
이벤트에를 받고 있다는 것을
감사합니다.
"tabs.executeScript를 실행하는 동안 unchecked runtime.lastError : chrome : // URL에 액세스 할 수 없습니다."=> http://stackoverflow.com/questions/19042857/can-you-access-chrome-pages-from-an 'chrome.tabs.executeScript' 호출에서 -extension – kol