event.target
is a SafariExtensionContextMenuItem
, not the page element you are expecting. To get access to the page contents, you will need to use an injected script:
global.js
safari.application.addEventListener('command', handleCommand, false);
function handleCommand(event) {
if(event.command === 'geturl') {
var link = event.userInfo;
if (link) {
safari.application.openBrowserWindow().activeTab.url = link;
}
}
}
injected.js
document.addEventListener('contextmenu', handleContextMenu, false);
function handleContextMenu(event) {
var target = event.target;
while(target != null && target.nodeType == Node.ELEMENT_NODE && target.nodeName.toLowerCase() != "a") {
target = target.parentNode;
}
safari.self.tab.setContextMenuEventUserInfo(event, target.href);
}