我目前正在遍历自定义协议,以将信息从浏览器传递到Electron应用程序中。此功能在Chrome浏览器以外的所有浏览器上均适用。下面的代码在iframe中运行该协议,然后将数据加载到Electron中。
代码
<iframe id="dataDiv" style="width:100%;align:center;overflow-y:hidden;" frameborder="0" scrolling="no" />
url = "custom-protocol://some-data?"
for (i = 0; i < 5; i++) {
$("#dataDiv").attr("src", url + i);
}
上面的代码是我试图实现这一目标的伪代码。
期望
我希望它将循环5次,并将数据传递到Electron应用程序中。如前所述,这似乎仅适用于IE和Firefox。
实际结果
在调试Chrome时,我发现它仅执行第一页。从外观上看,无论出于何种原因,Chrome只会在循环中执行第一个协议加载。
其他尝试
我还试图在循环中进行超时。认为可能是 只是触发协议太快而Chrome却不喜欢这样。 那也失败了。
我什至尝试遍历创建新标签的JavaScript, 而不是iframe。它给了我相同的结果。
有人知道Chrome中的安全设置会阻止自定义协议同时多次加载到Chrome中吗?
答案 0 :(得分:0)
答案很简单,不要使用协议发布数据。相反,我最终在electronic中创建了一个Web服务器,并通过URL传递了数据。
var http=require('http');
var url=require('url');
var server=http.createServer(function(req,res){
var pathname=url.parse(req.url).pathname;
switch(pathname){
case '/data':
var query=url.parse(req.url).query;
someFunction(query);
res.end('200 ok');
break;
}
}).listen(8080);
通过这种方式,我可以使用AJAX将数据启动并移交给Electron而不是iframe。
然后,您只需像这样传递数据:
http://localhost:8080/data?{insertyourdatahere}