Safari extension: Event for a completely new tab?
在这个答案(案例3)中,他指导在inject.js中监听点击事件。
有人可以展示这个实现吗?
答案 0 :(得分:3)
这是我之前使用过的一个扩展程序的实现:
return [
self.sundayAMButton,
self.mondayAMButton,
self.tuesdayAMButton,
self.wednesdayAMButton,
self.thursdayAMButton,
self.fridayAMButton,
self.saturdayAMButton,
self.sundayPMButton,
self.mondayPMButton,
self.tuesdayPMButton,
self.wednesdayPMButton,
self.thursdayPMButton,
self.fridayPMButton,
self.saturdayPMButton
].map(nilToBool)
文件,在Extension Builder中,在扩展程序全局页面部分下选择该文件:
global.html
的来源:
global.html
创建<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>My Extension</title>
</head>
<body>
<script>
function messageHandler(event) {
var newTab = null;
var url = null;
if (event.name === "open_new_tab") {
url = event.message;
newTab = safari.application.activeBrowserWindow.openTab();
newTab.url = url;
}
}
safari.application.addEventListener("message", messageHandler, false);
</script>
</body>
</html>
文件,并将其添加到已注入的扩展程序内容 - &gt;结束脚本部分:
extension.js
的来源:
extension.js
这会发送一条消息,其中包含您的(function() {
// ... rest of you extension code
openNewTabWithUrl("http://google.com")
function openNewTabWithUrl(url) {
safari.self.tab.dispatchMessage("open_new_tab", url);
}
}());
到extension.js
的网址,该网址会选择该消息并打开新标签页。