사용자가 '이 웹 사이트에 확장 프로그램 사용'버튼을 클릭하도록 허용하고 싶습니다.사용자가 Chrome 확장 프로그램에서 content_script 일치 항목을 추가하도록 허용
처음에는 내 콘텐츠 스크립트와 일치하지 않아서 사용자가 필요할 때 추가 할 수 있습니다. 가능합니까? 사용자가 버튼을 클릭하면 확장 프로그램은 웹 사이트를 방문 할 때마다 한 번만이 아니라 작업을 수행합니다.
사용자가 '이 웹 사이트에 확장 프로그램 사용'버튼을 클릭하도록 허용하고 싶습니다.사용자가 Chrome 확장 프로그램에서 content_script 일치 항목을 추가하도록 허용
처음에는 내 콘텐츠 스크립트와 일치하지 않아서 사용자가 필요할 때 추가 할 수 있습니다. 가능합니까? 사용자가 버튼을 클릭하면 확장 프로그램은 웹 사이트를 방문 할 때마다 한 번만이 아니라 작업을 수행합니다.
가능한 경우 (질문의 두 번째 패트를 참조하십시오), 약간 사용하기 어려울 수 있습니다. 이것은 원인이됩니다
// content.js
// Maybe an async check to background/chrome.storage
if(someCondtion(window.location.host)) startWorking();
function startWorking() {
/* all your main code here */
}
: 페이지가 일치하지 않는 경우
실용적인 솔루션은 항상 (즉 <all_urls>
일치 패턴) 주입 콘텐츠 스크립트를 선언하지만, 실행을 중지하는 것 무서운 권한 경고를 런타임에 실행하지만, 아마도 구현하기가 가장 쉽습니다.
크롬에는 설치 후 요청할 수있는 mechanism called "optional permissions"이 있습니다. 담요 호스트 권한을 선택적으로 요청한 다음 필요한 원본 만 요청할 수 있습니다.
경고 : 아래 코드는 테스트되지 않았습니다.
// background.js
function requestHostPermission(host){
chrome.permissions.request({
origins: ['*://' + host + '/']
}, function(granted) {
// The callback argument will be true if the user granted the permissions.
if (!granted) {
if(chrome.runtime.lastError) console.error(chrome.runtime.lastError);
throw Error("Permission denied for host "+host);
}
});
}
그러나 당신은 당신이 매니페스트 선언 스크립트를 선택 권한을 사용할 수 없습니다로, programmatic injection의 어떤 종류를 사용해야합니다.
사용자 동작에 대한 응답으로 [chrome.permissions.request'] (https://developer.chrome.com/extensions/permissions#method-request)를 호출해야합니다. 선택적 콘텐츠 스크립트는 특히 모든 프레임에 삽입하려는 경우 구현하기가 쉽지 않습니다. –
@RobW 해설서의 두 번째 부분은 정확하게 내 요점입니다. – Xan
제 의지는 항상 주입되는 콘텐츠 스크립트를 가지고 있지 않지만 관리가 어렵습니다. 어쨌든 답장을 보내 주셔서 감사합니다! –