当前位置: 首页 > 知识库问答 >
问题:

在Safari扩展中设置新标签/窗口URL

赏开宇
2023-03-14

我正在创建一个safari扩展。如何手动将新选项卡/窗口设置为我选择的URL?我使用了这篇文章中的一些逻辑来确保我只是接管了用户创建的选项卡/WindowsSafariExtension:Event来创建一个全新的选项卡?

我设置了我的新选项卡事件侦听器:

safari.application.addEventListener("open", handleOpen, true);

使用此选项处理打开的选项卡/窗口:

function handleOpen(e) {
    if (e.target instanceof SafariBrowserTab) {
        e.target.addEventListener('beforeNavigate', handleBeforeNavigate, false);
        setTimeout(function () {
            e.target.removeEventListener('beforeNavigate', handleBeforeNavigate, false);
            takeOverTab();
        }, 50);
    }
}

function handleBeforeNavigate(e) {
    e.target.removeEventListener('beforeNavigate', handleBeforeNavigate, false);
    if (e.url === null) {
        takeOverTab();
    }
}

function takeOverTab() {
window.location.href = "http://www.yahoo.com";
}

当一个新的选项卡/窗口打开时,我能够发出警报,但我一辈子都不知道如何浏览到url。我尝试了window.location.href,但似乎没有任何效果,当我打开一个新标签时,我仍然会看到“热门网站”页面。

提前谢谢!

共有1个答案

公孙巴英
2023-03-14

将您的takevertab功能更改如下:

function takeOverTab(tab) {
    tab.url = "http://www.yahoo.com";
}

修改函数调用以包含对选项卡的引用:

takeOverTab(e.target);

此外,在您的beForeNavigate处理程序中,您应该添加e.preventDefault()以防止选项卡加载将要加载的任何内容:

function handleBeforeNavigate(e) {
    e.target.removeEventListener('beforeNavigate', handleBeforeNavigate, false);
    if (e.url === null) {
        e.preventDefault();
        takeOverTab();
    }
}
 类似资料:
  • 问题内容: 我正在尝试将DOM附加到从打开的自我chrome扩展文件中。假设我在chrome扩展文件中存在一个名为的文件,在执行时的某个时刻,我使用打开了该文件,然后将DOM附加到此html文件中。 无论如何,我可以从那里开始吗? 问题答案: 尽管您可以使用chrome.extension.getViews直接访问在新标签页/窗口中打开的扩展页面的DOM(或者直接访问,如果使用window.ope

  • 问题内容: 我正在尝试在新选项卡(而不是弹出窗口)中打开URL。 我看到了相关的问题,答案看起来像这样: 但是它们都不适合我,浏览器仍然尝试打开一个弹出窗口。 问题答案: 作者无法选择在新标签页中打开,而不是在新窗口中打开。这是用户的偏爱。 CSS3提出了新的目标,但是该规范被放弃了。 的反向是不正确的; 通过在的第三个参数中指定窗口的尺寸,可以在选项卡的首选项触发新窗口。

  • 问题内容: 是否可以在新标签页而不是同一标签页中打开链接? 问题答案: 您应该在锚标记中添加和。 例如: 添加不是强制性的,但这是建议的安全措施。可以在下面的链接中找到更多信息。

  • 问题内容: 我有一个3d渲染程序,该程序根据鼠标在屏幕上的位置围绕观察者旋转世界。这条线定义了地球旋转的弧度量 其中xy [0]是屏幕中心的x坐标 这意味着观察者视野的旋转量受到鼠标可以移动的距离的限制。如果我能使鼠标回到屏幕中央,则可以解决此问题。有任何想法吗? 问题答案: 好消息是有一种方法可以做到。 中间的消息是,它没有很好的记录。 坏消息是它仅在某些平台上有效。 另一个中间消息是,您至少可

  • 我正在寻找重定向新标签Safari到一定的URL,本质上改变默认的新标签页。但是,我不想重定向通过以下链接打开的新选项卡。 Windows和Tabs API描述了选项卡“打开”事件,但当任何新选项卡打开(包括从链接打开的新选项卡)时,都会触发这些事件。 是否有一种方法可以仅为那些通过单击新标签按钮创建的标签捕获新标签事件?

  • 我有一个使用flink应用程序的场景,该应用程序接收以下格式的数据流: {“event\u id”:“c1s2s34”,“event\u create\u timestamp”:“2019-03-07 11:11:23”,“amount”:“104.67”} 我使用下面的滚动窗口来查找过去60秒内输入流的总和、计数和平均值。 键值。时间窗口(时间秒(60)) 然而,我如何标记聚合结果,以便我可以说