在活动上重新加载popover

时间:2014-10-21 19:30:41

标签: safari safari-extension

每次单击工具栏项时,有没有办法重新加载弹出窗口?我一直在寻找类似的东西,并通过文档,但我已经做得很短。看起来很简单,但目前我找不到解决方案。

1 个答案:

答案 0 :(得分:2)

通过重新加载工具栏项(这只是一个按钮)不确定您的意思,但您可以通过调用window.location.reload()来重新加载弹出窗口,就像任何其他窗口一样。假设您只有一个弹出窗口,您可以使用

从全局页面脚本
safari.extension.popovers[0].contentWindow.location.reload();

现在,为了在单击其关联的工具栏项时重新加载弹出窗口,您需要为工具栏项指定一个命令(请参阅文档)。然后你可以使用这样的东西,假设你只有一个工具栏项:

safari.application.addEventListener('command', function (evt) {
    // assume your command is 'reloadPopover'
    if (evt.command == 'reloadPopover') {
        // evt.target is the toolbar item
        evt.target.popover.contentWindow.location.reload();
    }
}, false);

注意:如果你这样做,当你打开它时,弹出窗口会显示一种令人讨厌的闪烁/调整大小效果。避免这种情况的一种方法可能是延迟显示弹出窗口,直到重新加载完成。如果要这样做,则需要取消弹出框与Extension Builder中工具栏项的关联,而是使用工具栏项的showPopover方法在准备好时显示弹出窗口。