我已成功将我的扩展连接到我们的本机主机:
var pulse_tracker_port = chrome.runtime.connectNative('com.cloudfactory.pulsetracker');
但我如何知道连接是否成功呢?无论连接是否成功,“pulse_tracker_report.name”的值始终为空字符串。
我还尝试添加侦听器以查明连接是否成功,但没有调用这些回调:
chrome.runtime.onConnect.addListener(function(port)
{
console.log('Connected to "Pulse Tracker" @port: ' + port.name);
});
chrome.runtime.onConnectExternal.addListener(function(port)
{
console.log('Connected to "Pulse Tracker" @port: ' + port.name);
});
顺便说一句,这也不会被调用:
pulse_tracker_port.onConnect.addListener(function(port)
{
console.log('Connected to "Pulse Tracker" @port: ' + port.name);
});
这就是我尝试这样做时得到的结果:
main.js:26 Uncaught TypeError: Cannot read property 'addListener' of undefined
onConnectExternal 适用于扩展程序之间的跨扩展程序消息传递,但看起来它不适用于本机消息托管。任何帮助,将不胜感激。谢谢
chrome.runtime.onConnect
and chrome.runtime.onConnectExternal
与此无关,因为它们通知您有关传入连接的信息,而不是有关传出连接的状态的信息。
pulse_tracker_port
is a Port object https://developer.chrome.com/extensions/runtime#type-Port哪个没有onConnect
财产。
您需要做的是立即分配一个侦听器onDisconnect
端口对象的事件。如果连接出现问题,将调用侦听器并chrome.runtime.lastError
将被设置:
var pulse_tracker_port = chrome.runtime.connectNative('com.cloudfactory.pulsetracker');
pulse_tracker_port.onDisconnect.addListener(function() {
if (chrome.runtime.lastError) {
console.error(chrome.runtime.lastError);
}
});
否则,只需尝试使用它,.postMessage()
and .onMessage
事件。为了postMessage
,如果端口断开连接,则会抛出错误。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)