我有这个 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) 如果链接是“https://maps.google.com/”,则获取 ID“leurl”;2) 如果它不是 Google映射链接,然后从地址栏中获取链接。我得到了第二部分,但我不知道如何做第一部分。我知道在制作 Google Chrome 扩展程序时如何做(document. getElementById('链接');
).
我怎样才能做到这一点?任何帮助表示赞赏。先感谢您。
请原谅我,因为我不太熟悉制作 Safari 扩展。
最佳答案
如果我没理解错的话,你想把当前页面包含的一些信息放到你的全局页面中。不幸的是,使用 document.getElementById('link');
不会直接工作,因为全局页面无法访问网页的内容(我认为出于安全原因)。
您将不得不使用注入(inject)脚本和消息传递将信息发送到全局页面。例如,您可以执行以下操作:
全局.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);
}
}
注入(inject).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 中将它们分别设置为全局页面和注入(inject)脚本。
Apple Safari Extensions Development Guide是此类事情的重要资源。
关于javascript - 在 Safari 中获取 Google map 链接或网页链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783034/