1

Google 크롬 확장 프로그램을 만들고 있습니다. 내 확장 기능은 현재 컨텐트 영역과 헤더를 확장하여 보석 컨테이너 (알림 및 친구 요청이있는)의 다른 아이콘을위한 공간을 만들고 아이콘을 추가합니다. 페이지가 처음로드 될 때 제대로 작동하지만 사이트의 다른 페이지로 이동 한 다음 집으로 돌아 가면 레이아웃이 엉망이됩니다.Google 확장 프로그램이 페이지가로드 될 때마다 콘텐츠 스크립트를 실행 하시겠습니까?

페이지가로드 될 때마다 처음부터 콘텐츠 스크립트를 실행하는 방법이 있는지 알고 싶습니다. 이게 가능한가, 아니면 다른 방법으로로드 할 때마다 페이스 북에 넣은 자바 스크립트를 삽입 할 수 있습니까?

답변

0

setInterval()을 사용하여이 코드를 (또는 적어도 항상 실행되지는 않았지만) 매 밀리 초 실행하는 방법을 발견했습니다.

오해하지 않는 한 Chrome은 브라우저 세션 당 한 번 코드를 실행하므로 분명히 setInterval()을 사용하는 것이 가장 좋습니다. 하지만 이상한 행동은 크롬이 내 코드의 일부를 한 번 실행 한 것이었고 특정 상황이 충족되지 않는 한 그 이후가 아니 었습니다.

setInterval()이 경우에는 놀라운 일입니다.

1

페이지가로드 될 때마다 코드가 제대로 삽입되지만 사용자가 다른 탭을 선택하면 코드가 다시 실행되어야합니다.

Page Visibility API을 살펴보십시오. visibilitychange 이벤트를 수신하고 코드를 다시 실행할 수 있어야합니다.

+0

exactly-하지 않음 전환 탭은 처음 삽입 될 때 코드의 결과를 보존합니다. Facebook 버튼을 클릭하거나 Facebook을 클릭하면 Facebook의 모든 페이지에서 다시 실행됩니다. 어떤 이유로 든 내 스크립트의 일부는 "실행 취소"되고 다른 일부는 처음으로 주입 결과를 유지합니다. – Purag

+0

오, 페이스 북에서 AJAX로 페이지를로드 할 때 변경 사항 중 일부가 중단/제거되는 것에 대해 이야기하고 있습니까? [onpopstate] (https://developer.mozilla.org/en/DOM/window.onpopstate) 및 [onhashchange] (https://developer.mozilla.org/en/DOM/window.onhashchange)를 사용하여 변경 사항이 취소되었습니다. 필요에 따라 다시 추가하십시오. – abraham

+0

'onpopstate'와'onhashchange' 모두 효과가 없습니다. 실제로, 'onhashchange'는 프로파일을 망쳐 놓기 시작했습니다. – Purag

0

매니페스트 파일에 스크립트를 콘텐츠 스크립트로 추가해야합니다. 배경 페이지는 브라우저 세션 당 한 번만 실행됩니다.

매니페스트 :

{ 
    "name": "", 
    "version": "", 
    "description": "", 
    "icons": { "16": "icon16.png", 
      "48": "icon48.png", 
      "128": "icon128.png"}, 
    "content_scripts": [ 
    { 
     "matches": ["<all_urls>"], 
     "js": ["go.js"], 
     "all_frames":true 
    } 
    ], 
    "permissions": [ 
    "*://*/*" 
    ] 
} 

내용 스크립트 파일 (go.js) :

// your stuff 

PS :이 방법은 크롬 내부 페이지에서 작동하지 않습니다 ...

+0

전에 콘텐트 스크립트로 사용하고 있었지만 더 나빴습니다. 배경 페이지에서 실행되도록 변경했는데 문제가 좀 더 개선되었습니다 (실제로 실행되고있는 것보다 더 자주 발생). – Purag

관련 문제