繁体   English   中英

在Safari中获取Google Map链接或Web链接

[英]grab Google Map link or web link in Safari

我有这个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);
    }
};

我希望能够在以下位置做出“如果”声明:1)如果链接为“ https://maps.google.com/,则获取ID”为“ leurl”,并且2)如果不是Google Map链接,然后从地址栏中获取链接。我得到了第二部分,但我不知道如何做第一部分。尽管如此,我在制作Google Chrome扩展程序时知道如何做到这一点( document.getElementById('link'); )。

我将如何做到这一点? 任何帮助表示赞赏。 先感谢您。

请原谅我,因为我对制作Safari扩展不太熟悉。

如果我理解正确,则希望将当前页面中包含的某些信息添加到全局页面中。 不幸的是使用document.getElementById('link'); 无法直接使用,因为全局页面无法访问网页的内容(出于安全考虑,我认为)。

您将必须使用注入的脚本和消息传递将信息发送到全局页面。 例如,您可以执行以下操作:

global.js

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);
    }
}

injection.js

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扩展开发指南》是此类资源的绝佳资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM