safari扩展:从注入的脚本向popover发送消息

时间:2013-11-08 08:40:26

标签: popover addeventlistener messages safari-extension

我正忙于在safari中创建博彩公司扩展并遇到以下问题。在我的popover中,我有一个包含按钮的iframe。单击该按钮(提交按钮)时,必须发送以下消息:

window.addEventListener('message', function(e){
    if(e.data.command == 'closeSymbalooBookmarker'){
        window.setTimeout(function(){
            window.close();
        }, 2000);
    }
});

你可以看到这在2秒内关闭了弹出窗口(上面的脚本是用chrome扩展名制作的)。

我需要从注入脚本向弹出窗口发送一条消息,以便我可以在弹出窗口中关闭弹出窗口。或者还有其他方法吗?

谢谢你。

1 个答案:

答案 0 :(得分:1)

全局页面是从注入的脚本接收消息的最佳位置。

做这样的事情:

global.js

safari.application.addEventListener('message', handleMessage, false);
function handleMessage(msg) {
    if (msg.name === 'hidepopover') {
        safari.extension.popovers[0].hide()
    }
}

injected.js

setTimeout(function() {
    safari.self.tab.dispatchMessage('hidepopover');
}, 2000);