2014-07-14 3 views
0

사용자가 '이 웹 사이트에 확장 프로그램 사용'버튼을 클릭하도록 허용하고 싶습니다.사용자가 Chrome 확장 프로그램에서 content_script 일치 항목을 추가하도록 허용

처음에는 내 콘텐츠 스크립트와 일치하지 않아서 사용자가 필요할 때 추가 할 수 있습니다. 가능합니까? 사용자가 버튼을 클릭하면 확장 프로그램은 웹 사이트를 방문 할 때마다 한 번만이 아니라 작업을 수행합니다.

답변

2

가능한 경우 (질문의 두 번째 패트를 참조하십시오), 약간 사용하기 어려울 수 있습니다. 이것은 원인이됩니다

// content.js 

// Maybe an async check to background/chrome.storage 
if(someCondtion(window.location.host)) startWorking(); 

function startWorking() { 
    /* all your main code here */ 
} 

: 페이지가 일치하지 않는 경우

  1. 실용적인 솔루션은 항상 (즉 <all_urls> 일치 패턴) 주입 콘텐츠 스크립트를 선언하지만, 실행을 중지하는 것 무서운 권한 경고를 런타임에 실행하지만, 아마도 구현하기가 가장 쉽습니다.

  2. 크롬에는 설치 후 요청할 수있는 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의 어떤 종류를 사용해야합니다.

+1

사용자 동작에 대한 응답으로 [chrome.permissions.request'] (https://developer.chrome.com/extensions/permissions#method-request)를 호출해야합니다. 선택적 콘텐츠 스크립트는 특히 모든 프레임에 삽입하려는 경우 구현하기가 쉽지 않습니다. –

+0

@RobW 해설서의 두 번째 부분은 정확하게 내 요점입니다. – Xan

+0

제 의지는 항상 주입되는 콘텐츠 스크립트를 가지고 있지 않지만 관리가 어렵습니다. 어쨌든 답장을 보내 주셔서 감사합니다! –