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