2014-02-09 2 views
2

크롬 확장 프로그램을 처음 사용하고 Chrome 용 첫 번째 확장 프로그램 작성시 문제가 있습니다. 내가하려는 것은 새로운 탭 동작을 감지하고 미리 정의 된 (내 웹 페이지) URL로 리디렉션하는 것입니다.탭을 내 페이지로 리디렉션하는 Chrome 확장자

나는 manifest.json과 background.html을 작성했으나 작동하지 않는 것 같습니다. 나는 기능에 관한 Google 논문을 읽고 어떻게 사용 했습니까? 그러나 놓친 부분이있을 것입니다.

여기서 한 많은 것들을 이해하지 못합니다. 예를 들어 manifest.json의 콘텐츠 스크립트.

이 문제를 해결하는 데 도움이 될만한 점이 있습니다.

편집 여기

Error

EDIT2 지금 내가 background.html 파일이없는 업데이트 된 코드 입니다. 나는 새 탭을 열 때 manifest.json을

{ 
    "name": "Tabber", 
    "manifest_version" : 2, 
    "version": "1.0", 
    "description": "MyExtension", 
    "background" : { 
    "scripts": ["code.js"] 
    }, 
    "chrome_url_overrides": { 
     "newtab": "code.js" 
    }, 
    "permissions": [ 
    "tabs" 
    ] 
} 

code.js

<script> 
    chrome.browserAction.onClicked.addListener(function(tab){ 
      var action_url = "www.xyz.com" 
      chrome.tabs.create({ url: action_url }); 
    } 
</script> 

지금, 나는 표시의 .js 파일의 소스를 볼 수 있습니다. Screenshot : Output

왜 스크립트가 실행되지 않습니까?

+0

게시하기 전에 검색하십시오. 다음은 비슷한 질문입니다. http://stackoverflow.com/questions/3743072/chrome-new-tab-event –

+0

내 답변, 필요한 html 파일, js이 아닙니다. –

답변

6

기본 페이지를 넘고 싶다면 js 파일이 아닌 html 파일을 사용하십시오. 페이지를 넘기만하면 배경 페이지 나 콘텐츠 스크립트가 필요 없습니다.

menifest.json :

{ 
    "name": "Tabber", 
    "manifest_version" : 2, 
    "version": "1.0", 
    "description": "MyExtension", 
    "chrome_url_overrides": { 
     "newtab": "my.html" 
    }, 
    "permissions": [ 
     "tabs" 
    ] 
} 

my.html :

<!DOCTYPE html> 
<html> 
<head> 
    <title>over ride page</title> 
    <script type="text/javascript" src="code.js"> 
    </script> 
</head> 
<body>  
</body> 
</html> 

code.js :

window.open("http://www.google.com", "_self"); 

참고 : 쓸 수 없습니다 여기 샘플 코드입니다 html 파일의 모든 js. js 파일을 html 파일에 포함시켜야합니다.

그리고 js 파일도 필요하지 않습니다. 다음과 같이 my.html을 수정하십시오.

<head> 
    <meta http-equiv="refresh"content="0;URL=http://www.google.com"> 
</head> 
0

manifest.json 파일에이 사람을 추가하십시오.

"chrome_url_overrides": { 
     "newtab": "index.html" 
    } 

index.html이 페이지로 대체되었습니다. 이렇게하면 기본값 대신 새 탭을 열 때 index.html이 표시됩니다.

기본적으로 동일한 기능을하는 확장 프로그램이 있습니다. 여기 내 명단이 있습니다. 참고로 사용할 수있는 json.

{ 
    "name": "appName", 
    "version": "0.1", 
    "manifest_version": 2, 
    "chrome_url_overrides": { 
     "newtab": "index.html" 
    }, 

    "description": "Desc Here", 
    "icons": { 
    // "128": "icon128.png" 
    }, 
    "content_scripts": [ { 
    "css": ["css/styles.css"], 
    "js": [ ], 
    "matches": [ "*://*/*" ], 
    "run_at": "document_start" 
    } ], 
    "minimum_chrome_version": "18", 
    "permissions": [ "http://*/*", "https://*/*", "cookies", "tabs", "notifications" ] 

} 
+0

오류가 발생합니다. 메인 포스트에 이미지 부착. – Priyabrata

+0

솔직히 manifest.json 항목에 대해 너무 많이 알지는 못하지만 확장 기능을 알고 있습니다. 사용자가 원하는대로 확장 기능을 작성 했으므로 참조 용으로 게시했습니다. 콘텐츠 스크립트 섹션을 가지고 있고 업데이트 한 것처럼 JS 및 CSS 파일을 분리하면됩니다. –

+0

그것도 같은 문제를 일으키는 : ( – Priyabrata

2

새로운 크롬 확장을 사용하면 백그라운드 페이지에 스크립트 코드를 삽입하지 않아야합니다.

인라인 스크립트와 이벤트 핸들러 인해 콘텐츠 보안 정책의 사용에

을 허용, 당신은 더 이상 HTML 콘텐츠와 인라인 있습니다 태그를 사용할 수 없습니다. 외부 JS 파일로 이동 된 이어야합니다. 또한 인라인 이벤트 처리기는 도 지원되지 않습니다.예를 들어, 에 확장을 다음과 같은 코드를 가지고 가정 :

https://developer.chrome.com/extensions/tut_migration_to_manifest_v2.html#inline_scripts

당신이해야 할 것은 JS에 매니페스트 배경 속성을 JS 파일에 코드를 이동하거나 설정입니다

은 배경 속성을 사용해보십시오 ... 파일 또는 JS 외부 파일로 연결되는 배경 페이지 을 가지고이 모든 당신의 js 코드를 입력 :를 (210)

1) 기본적으로 (매니페스트 배경 스크립트에 추가 당신이 지금 확장의 배경 페이지를 필요가 없습니다)

background : { 
"scripts": ["background.js"] 
} 

2) 그런 다음 확장 디렉토리에 AA background.js을 추가하고 넣어 이 모든 JS 코드 ..

다음

다시 시도, 확장이 작동하는 경우 :

3) 참조 JS 파일에서 모든 HTML을 제거하고 background.js에 당신의 js를 넣어

chrome.browserAction.onClicked.addListener(function(tab){ 
      var action_url = "www.xyz.com" 
      chrome.tabs.create({ url: action_url }); 
    } 
+0

새 탭을 열면 .js 파일의 내용이 표시됩니다. 어디서 잘못 되었나요? – Priyabrata

+0

내용? –

+0

html을에서 제거하십시오 background.js 그냥 JS 파일에 다음을 넣어 : –

관련 문제