tabid를 사용하여이 작업을 수행 할 생각 이었지만 탭 내에서 탐색 할 때 꽤 자주 변경되는 것 같습니다. API reference은 tabid가 "브라우저 세션"내에서 고유하다는 점에 유의합니다. 나는 이것을 브라우저 프로세스의 수명 내에서 의미있게 생각했지만, 이제는 특정 웹 사이트와의 세션에서만 유일성이 보장 될 가능성이 높아졌습니다. 탭 전체를 고유하게 식별 할 수있는 또 다른 방법이 있습니까?탭 수명 동안 탭을 고유하게 식별하는 방법이 있습니까?
답변
사전 렌더링 및 기타 요인으로 인해 탭을 '교체'할 수 있습니다. 즉, 탭을 열린 상태로 유지하더라도 tabId가 변경 될 수 있습니다. chrome.webNavigation.onTabReplaced
은 이러한 이벤트를 캡처하는 데 사용할 수 있습니다. 자세한 내용은 https://developer.chrome.com/extensions/webNavigation.html#event-onTabReplaced을 참조하십시오.
- 것은 당신이 "탭"과 확장을위한 "webNavigation"요청을 요청했고 확장이 비를 사용하지 않는 것을 확인하십시오 영구 배경 페이지 (manifest.json에서 background.persistent = true가 없음). 또한 Google이 기본 검색 엔진이고 빠른 검색이 사용 설정되어 있는지 확인하십시오.
- Google 검색이 아닌 일부 웹 사이트를 엽니 다.
- 확장 프로그램의 배경 페이지에있는 개발자 도구에서
chrome.tabs.query({}, function(tabs){console.log(tabs)})
을 실행하십시오. 기존 탭과 해당 ID를 확인하십시오. - DevTools에서
chrome.webNavigation.onTabReplaced.addListener(function(details){console.log(details);
을 실행하십시오. - 해당 탭의 검색 주소창에 무언가를 입력하여 Google 순간 검색을 실행하고 페이지 본문을 클릭하십시오. DevTools 콘솔에서 onTabReplaced 이벤트가 시작되고 이전 탭과 새 탭 ID가 표시되어야합니다.
chrome.tabs.query({}, function(tabs){console.log(tabs)})
을 다시 실행하면 해당 탭 ID가 실제로 '변경'되었음을 알 수 있습니다.
실제로 탭 ID는 탭의 상수로 취급 될 수 있습니다. 당신이 말하는 임시 ID는'chrome.tabs' API에 노출되지 않습니다 - https://developer.chrome.com/extensions/webNavigation.html#tab_ids를보십시오. –
@RobW "일단 이러한 탭을 스왑하면 onTabReplaced 이벤트가 시작되고 이러한 API를 통해 액세스 할 수있게됩니다." 필자의 이해를 돕기 위해 기존 탭의 탭 ID를 '변경'할 수 있습니다. 그러나 나는 그 순간의 사건을 재현 할 수 없었다. –
- 1. 프로세스를 고유하게 식별하는 확실한 방법이 있습니까?
- 2. 연결을 고유하게 식별하는 방법?
- 3. 네트워크를 고유하게 식별하는 방법은 무엇입니까?
- 4. 모니터를 고유하게 식별하는 방법은 무엇입니까?
- 5. Mac 시스템을 고유하게 식별하는 방법
- 6. oAuth에서 누군가를 고유하게 식별하는 방법
- 7. Java에서 스레드를 고유하게 식별하는 방법은 무엇입니까?
- 8. 컴퓨터에서 OS를 고유하게 식별하는 방법은 무엇입니까?
- 9. Entity Framework에서 엔티티를 고유하게 식별하는 방법은 무엇입니까?
- 10. 컴퓨터 프로그램을 고유하게 식별하는 방법은 무엇입니까?
- 11. 유형을 고유하게 식별하는 가장 좋은 방법
- 12. 클래스와 객체를 식별하는 방법이 있습니까?
- 13. admin에게만 facebook 탭을 보이게하는 방법이 있습니까?
- 14. Google Places API에서 장소를 고유하게 식별하는 방법
- 15. websocket에서 사용자를 고유하게 식별하는 방법은 무엇입니까?
- 16. 고유하게 Windows 양식을 식별하는 방법은 무엇입니까?
- 17. Android 탭을 슬라이드하는 방법이 있습니까?
- 18. EditText에서 단어 탭을 감지하는 방법이 있습니까?
- 19. 장치의 수명 동안 Build.DEVICE가 일정합니까?
- 20. Visual Studio에서 현재 탭을 최대화하는 방법이 있습니까?
- 21. 아이폰 앱의 사용자를 고유하게 식별하는 가장 쉬운 방법
- 22. 상위 뷰에서 선택한 셀을 식별하는 방법이 있습니까
- 23. c/C++ 라이브러리의 버전을 식별하는 방법이 있습니까?
- 24. 클릭 한 Google지도 마커를 식별하는 방법이 있습니까?
- 25. Python에서 상속 된 메서드를 식별하는 방법이 있습니까?
- 26. 두 결과 집합이 동일한 지 여부를 고유하게 식별하는 방법은 무엇입니까?
- 27. 웹 (PHP) 응용 프로그램에서 클라이언트를 고유하게 식별하는 방법
- 28. 함수에 대한 모든 호출을 고유하게 식별하는 방법은 무엇입니까?
- 29. 안드로이드에서 세 손가락 탭을 식별하는 방법
- 30. Pharo/Squeak에서 스크립트 창을 고유하게 식별하는 방법은 무엇입니까?
이전에 질문을했지만 아무도 아직 답변을 찾지 못했습니다. http://stackoverflow.com/questions/12658370/re-establishing-tab-identity-in-a-chrome-extension-after -Browser-restart –
@KonradDzwinel, 당신이 링크 한 질문은 OP의 질문과 같지 않습니다. 이 질문은 하나의 borwser 세션 내에서 tabID ID에 관한 것이지만, 연결된 질문은 세션간에 ID를 보존하는 것과 관련됩니다. 이 질문에 대해서는 대부분의 경우 'Chrome_RenderWidgetHostHWND' 핸들이 다른 사이트간에 이동 한 후에도 탐색 중에 동일하게 유지됩니다. 따라서이 핸들로 탭을 추적하는 NPAPI 플러그인을 만들 수 있습니다. – Stan