휴가 중이며 사파리 확장 개발에 대해 거의 알지 못하는 동료를 위해 디버깅 중입니다.SafariNavigateEvent에서 URL 및 페이지 제목 데이터 가져 오기
'open', 'beforeNavigate', 'navigate'및 'activate'이벤트를 수신하는 Safari 확장 프로그램이 있습니다. 이러한 이벤트가 발생하면 activeTab의 URL 및 페이지 제목을 추적하려고합니다.
그러나 어떤 경우에는 (예 : 새 탭이 열리기 전에 beforeNavigate 및 탐색) 페이지 제목이 처리기에 전달 된 safari.application.activeBrowserWindow.activeTab
개체 또는 event
개체에 항상 정의되어있는 것은 아닙니다.
이벤트 개체를 콘솔에 출력하면 올바르게 채워지지만 이벤트 처리기에서 event['target']['title']
에 직접 액세스하면 Untitled
이 다시 나타납니다. 데이터를 채우는 데 지연이 있다고 생각하지만 딜레이를 처리하는 방법을 알지 못하거나 문서를 찾을 수 없습니까?
참고 저는 info.plist에서 웹 사이트 액세스가 ALL로 설정되어 있습니다.
누구에게이 문제가 발생 했습니까? 그것을 고치는 방법에 대한 생각?
safari.application.addEventListener("beforeNavigate", function (event) {
console.log('//-- Event Data -------------------------------------');
console.log(event);
console.log(event['target']);
console.log('Url: ' + event['target']['url']);
console.log('Title: ' + event['target']['title']);
console.log('//-- Tab Data -------------------------------------');
console.log('Url: ' + safari.application.activeBrowserWindow.activeTab.url);
console.log('Title: ' + safari.application.activeBrowserWindow.activeTab.title);
}, true);
그리고 콘솔에 출력 :
그는 코드의 단편이다
//-- Event Data -------------------------------------
SafariBeforeNavigateEvent
BUBBLING_PHASE: 3
CAPTURING_PHASE: 1
TARGETING_PHASE: 2
bubbles: true
cancelable: true
currentTarget: null
defaultPrevented: false
eventPhase: 0
target: SafariBrowserTab
browserWindow: SafariBrowserWindow
page: SafariWebPageProxy
reader: SafariReader
title: "Google"
url: "https://www.google.ca/"
__proto__: CallbackObject
timeStamp: 1379353767889
type: "beforeNavigate"
url: "http://www.google.ca/"
__proto__: CallbackObject
SafariBrowserTab
browserWindow: SafariBrowserWindow
page: SafariWebPageProxy
reader: SafariReader
title: "Google"
url: "https://www.google.ca/"
__proto__: CallbackObject
Url:
Title: Untitled
//-- Tab Data -------------------------------------
Url:
Title: Untitled
답변 해 주셔서 감사합니다. 올바른 것으로 표시했습니다. 제 경우에는 가장 좋은 해결책은 삽입 된 스크립트가 배경 스크립트에 페이지 제목과 URL을 보내도록하는 것입니다. 불행히도 Safari에서 해고 된 이벤트는이 데이터를 추적하는 데 꽤 쓸모없는 것으로 판명되었습니다. 탐색 이벤트조차도 정의되지 않은 또는 제목없는 페이지 제목을보고합니다. 궁극적으로 IMO는이 작업을 수행하는 방법이어야합니다. 오 잘. – adampetrie