Chrome扩展页面重新加载

时间:2015-10-15 11:46:54

标签: google-chrome-extension

我正在编写一个chrome扩展,它有一个content.js来操作当前的tab数据以及一个在执行时生成的弹出窗口。但是,我的问题是,当我对扩展进行更改时,我必须重新加载扩展并刷新页面,否则它会给我一个“建立连接错误,端口不存在”错误。这是我的manifest.json文件

MediaPlayer player = new MediaPlayer();
//
// Your player initialisation code here
//
player.setAudioStreamType(AudioManager.STREAM_ALARM);

1 个答案:

答案 0 :(得分:3)

这是正常行为。当您在扩展中进行更改时,必须重新加载它。但是当您重新加载扩展时,所有现有内容脚本注入都会丢失与后台页面的连接。更重要的是,如果您尝试重新连接port.onDisconnected.addListener,出于安全原因,您将收到异常,因为新的后台进程将无法识别其先前的内容脚本注入。

当我遇到这个问题时,我提出了这个解决方案:

reconnect();

function reconnect() {

    var port = chrome.runtime.connect({
        name: 'injection'
    });

    port.onMessage.addListener(handleMessage);
    port.onDisconnect.addListener(function() {
        console.log('bg script disconnected');
        setTimeout(function() {
            try {
                reconnect();
            } catch (e) {
                location.href = location.href;
            }
        }, 1000);
    });
}

function handleMessage() {
}

我知道,这不仅仅是自动页面重新加载,但是没有其他方法可以重新连接以前的内容脚本注入 - 必须再次注入更新的扩展代码才能连接到后台脚本。 / p>

相关问题