Safari 扩展,从弹出窗口在新选项卡中打开 url
我的扩展程序从 globalpage.html 打开一个弹出窗口
safari.application.openBrowserWindow()
我想在主窗口的新选项卡中从弹出窗口打开一些网址。我无权访问
safari.extension.globalPage
或
safari.application.xxxxx
My extension opens a popup window from globalpage.html
safari.application.openBrowserWindow()
I would like to open some url from popup window in the new tab of main window. I don't have an access to
safari.extension.globalPage
or
safari.application.xxxxx
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(2)
温折酒2024-12-11 02:34:58
这对我有用。
它通过“myCommand”命令链接到工具栏项。
我不需要添加注入脚本,只需将其放在我的 global.html 文件中。
如果选项卡中没有加载 URL,则会禁用该功能,但我通过推荐以“event.target.disabled...”开头的行来关闭该功能。
<script type="text/javascript" charset="utf-8">
function performCommand(event)
{
if (event.command === "myCommand") {
safari.application.activeBrowserWindow.openTab().url = "http://www.yourdomain.com/";
}
}
function validateCommand(event)
{
if (event.command === "myCommand") {
// Disable the button if there is no URL loaded in the tab.
// event.target.disabled = !event.target.browserWindow.activeTab.url;
}
}
// if event handlers are in the global HTML page,
// register with application:
safari.application.addEventListener("command", performCommand, true);
safari.application.addEventListener("validate", validateCommand, true);
</script>
~没有更多了~
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
从注入的脚本中,您需要向全局页面发送一条消息,告诉它打开一个新选项卡。
在注入的脚本中:
在全局页面脚本中:
(这是 Safari 扩展的相关部分开发指南。)
但是,如果您想在最前面的窗口之外的另一个窗口中打开新选项卡(在您的情况下可能是弹出窗口),您需要以某种方式识别另一个窗口。例如,在打开弹出窗口之前,您可以将活动窗口复制到变量中,如下所示:
然后,当您想在其中打开新选项卡时,请使用:
From your injected script you need to send a message to the global page that tells it to open a new tab.
In the injected script:
In the global page script:
(Here's the relevant section of the Safari extension development guide.)
However, if you want to open the new tab in another window than the frontmost one—which in your case will presumably be your popup—you need to identify the other window somehow. For example, just before you open the popup, you could copy the active window to a variable, like this:
Then, when you want to open a new tab in it, use: