我有这个javascript代码:
function handleCommand (event) {
if (event.command === 'send') {
sendingLink(event.target.browserWindow.activeTab.url);
} else if (event.command === 'sendMenu') {
sendingLink(safari.application.activeBrowserWindow.activeTab.url);
}
};
我希望能够制作一个" if"声明我在哪里:1)抓住id" leurl"如果该链接是" https://maps.google.com/,并且2)如果它不是Google Map链接,则从地址栏中获取该链接。我得到了第二部分,但我不知道如何做第一部分。我知道如何在制作Google Chrome扩展程序时(document.getElementById('link');
)。
我怎样才能做到这一点?任何帮助表示赞赏。先感谢您。
请原谅我,因为我不太熟悉Safari扩展程序。
答案 0 :(得分:0)
如果我理解正确,您希望将当前页面中包含的一些信息添加到您的全局页面中。不幸的是,使用document.getElementById('link');
无法直接使用,因为全局页面无法访问网页内容(出于安全考虑,我认为)。
您必须使用注入的脚本和消息传递将信息发送到全局页面。例如,您可以执行以下操作:
const app = safari.application;
app.addEventListener('message', handleMessage, false);
function sendingLink(link) {
app.activeBrowserWindow.activeTab.page.dispatchMessage('getLink');
}
function handleMessage(msg) {
if (msg.name === 'returnLink') {
alert(msg.message);
}
}
safari.self.addEventListener('message', handleMessage, false);
function handleMessage(msg) {
if (msg.name === 'getLink') {
// Trigger share button. Maybe:
// document.getElementById('link').click();
var link = document.getElementById('leurl').value;
safari.self.tab.dispatchMessage('returnLink', link);
}
}
然后确保在Safari Extension Builder中将它们分别设置为全局页面和注入的脚本。
对于像这样的事情,Apple Safari Extensions Development Guide是一个很好的资源。