2017-12-28 8 views
2

사용자가 웹 사이트를 방문하면 Chrome 확장 프로그램에서 자바 스크립트를로드하고 싶습니다. 그러나 현재 Javascript는 사용자가 확장 아이콘을 클릭하고 확장 팝업이 열릴 때까지만 실행됩니다.크롬 확장 아이콘에서 자바 스크립트 만 실행

나는이 Chrome extension to load the script without clicking on icon 질문에서 대답을 보았습니다.

내의 manifest.json은 다음과 같습니다

{ 
    "manifest_version": 2, 

    "name": "Javascript example", 
    "description": "Some description.", 
    "version": "1.1", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 
    "permissions": [ 
    "activeTab", 
    "storage" 
    ], 
    "content_scripts": [ 
    { 
     "matches": ["*://*/*"], 
     "js": ["popup.js"] 
    } 
    ] 
} 

popup.js은 다음과 같습니다

document.addEventListener('DOMContentLoaded',() => { 

    alert("Working"); 
}); 

popup.html은 다음과 같습니다 경고 대화 상자가 표시됩니다

<!doctype html> 
<html> 
    <head> 
    <title>Getting Started Extension's Popup</title> 
    <script src="popup.js"></script> 
    </head> 
    <body> 
    </body> 
</html> 

경우에만 I 페이지가로드 될 때가 아니라 확장 아이콘 (예 : popup.html이 실행될 때)을 클릭하십시오. 확장 아이콘을 클릭 할 필요없이 popup.js 파일을 실행하고 싶습니다. 내가 뭘 놓치고 있니?

+1

추가' "run_at". –

+0

@ IvánNokonoko Worked! – user5155835

답변

2

매니페스트가 작동하지만 run_at의 기본값은 document_idle이며 이는 DOMContentLoaded이 이미 실행되었음을 의미합니다. 대신 run_atdocument_start으로 지정하여이 문제를 해결할 수 있습니다.

{ 
    "manifest_version": 2, 

    "name": "Javascript example", 
    "description": "Some description.", 
    "version": "1.1", 

    "browser_action": { 
    "default_icon": "icon.png", 
    "default_popup": "popup.html" 
    }, 

    "permissions": [ 
    "activeTab", 
    "storage" 
    ], 
    "content_scripts": [ 
    { 
     "matches": ["*://*/*"], 
     "run_at": "document_start", 
     "js": ["popup.js"] 
    } 
    ] 
} 

출처 : 매니페스트에서`content_scripts` 항목에서 "document_start"`: https://developer.chrome.com/extensions/content_scripts

0

당신은 페이지의 컨텍스트와 사용자가 특정 사이트를 방문 할 때 당신이 알고있는 것입니다 이런 식으로 내용을 실행하는 스크립트를 사용할 수 https://developer.chrome.com/extensions/content_scripts

+0

예제 – user5155835

+0

으로 답을 작성해주십시오. 답변에 제공된 링크의 예가 있습니까? 당신의 매니 페스트가 당신을 위해 다시 쓰길 원했습니까? –

+0

나는 mainfest를 썼다.콘텐츠 스크립트가있는 json 내가 쓴 것의 무엇이 잘못되었는지 묻고있다 – user5155835

1

당신은 콘텐츠 스크립트를 필요로합니다.

콘텐츠 스크립트는 웹 페이지의 컨텍스트에서 실행되는 JavaScript 파일입니다. 표준 DOM (Document Object Model)을 사용하여 브라우저에서 방문한 웹 페이지의 세부 정보를 읽거나 을 변경할 수 있습니다.

  • 찾기 및 프로세스 텍스트를보다 읽기 쉽게 만들기 위해 글꼴 크기를 증가 웹 페이지에 연결되지 않은 URL을 찾아 하이퍼 링크
  • 로 변환 : 여기

    콘텐츠 스크립트가 무엇을 할 수 있는지 몇 가지 예입니다 DOM의 마이크로 포맷 데이터

콘텐츠 스크립트의 코드를 항상 삽입해야하는 경우 다음 예와 같이 content_scripts 필드를 사용하여 확장 매니페스트를 만듭니다.

{ 
    "name": "My extension", 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css": ["mystyles.css"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ], 
    ... 
} 

자세한 내용은 & 구현을위한 this 링크를 참조하십시오.

+0

하지만 manifest.json에 작성된 content_scripts가 이미있다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? – user5155835

+0

질문을 파일 내용으로 업데이트 할 수 있습니까? –

+0

popup.html의 내용으로 질문을 업데이트했습니다. – user5155835

관련 문제