我目前正在循环使用自定义协议(protocol)以将信息从浏览器传递到 Electron 应用程序。这适用于除 Chrome 之外的所有浏览器。下面的代码在 iframe 中运行协议(protocol),然后将数据加载到 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 只执行循环中的第一个协议(protocol)加载。
其他尝试
只是触发协议(protocol)太快了,Chrome 不喜欢这样。
那也失败了。
而不是 iframe .. 它给了我相同的结果。
有谁知道 Chrome 中的安全设置会阻止自定义协议(protocol)同时多次加载到 Chrome 中?
最佳答案
答案很简单,不要使用协议(protocol)来 POST 数据。相反,我最终在 electron 中创建了一个 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}
关于javascript - 使用 Chrome 循环自定义协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55735666/