【发布时间】:2019-05-15 15:53:50
【问题描述】:
扩展程序只是检索活动选项卡的 URL 并将其发送到本机应用程序。它在所有其他网站上都取得了成功,包括正在播放视频的 youtube 子页面。 Firefox 和 chrome 都会出现同样的问题。
下面是chrome的代码
chrome.tabs.query({currentWindow:true,active:true},onGot);
function onGot(tabs){
tab=tabs[0].url;
port.postMessage(tab);
console.log(tab);
console.log("Response sent!");
}
在本机应用程序中,我先读取大小,然后再读取消息。以下是读取大小的代码。
int num = 0;
unsigned char c;
log("Listening for data Attempt1");
for (int i = 1;i <= 4;i++)
{
log("Waiting for chararcter");
c = cin.get();
int s = (i - 1) * 8 - 1;
if (s < 0) s = 0;
num = num | (((int)c) << s);
log("Read Character from extension");
log(int(c));
}
log("Output Size:");
log(num);
if (num <0 || num>1999) *//EDIT*
return "NULL";
这是我在“https://www.youtube.com/”上尝试将 URL 返回到本机应用程序时的日志文件
Listening for data Attempt1
Waiting for chararcter
Read Character from extension
255
Waiting for chararcter
Read Character from extension
255
Waiting for chararcter
Read Character from extension
255
Waiting for chararcter
Read Character from extension
255
Output Size:
2147483647
0xFFFFFFFF 是文件结尾。这意味着标准输入流已关闭。这只发生在 youtube.com 上。
【问题讨论】:
-
我注意到
tab是一个全局变量。可能存在页面重定向的竞争条件吗?可能有点影响 -
我实际上是等到整个页面加载后再测试它,所以它可能不是我认为的重定向!此外,在 javascript 中只有一个线程来处理事件循环。因此,没有可能出现竞争条件。另外,我首先将 url 复制到变量“tab”,然后在控制台中打印它 - 成功。问题在于发送到本机应用程序。 @LightnessRacesinOrbit
标签: javascript c++ stdin stdio chrome-native-messaging