我正在为一位正在度假且对 Safari 扩展开发知之甚少的同事调试一些东西。
我有一个 Safari 扩展程序,它监听“打开”、“之前导航”、“导航”和“激活”事件。当这些事件中的任何一个被触发时,我想跟踪 activeTab 的 url 和页面标题。
然而,似乎在某些情况下(即在打开新选项卡时之前导航和导航),页面标题并不总是在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