首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Chrome遍历自定义协议

用Chrome遍历自定义协议
EN

Stack Overflow用户
提问于 2019-04-17 20:40:55
回答 1查看 87关注 0票数 1

我目前正在浏览一个自定义协议,以便从浏览器将信息传递到电子应用程序中。这在除Chrome之外的每一个浏览器上都很好。下面的代码在iframe中运行协议,然后将数据加载到电子中。

代码语言:javascript
复制
<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次,并将数据传递到电子应用程序。如前所述,这似乎只适用于IE和Firefox。

实际结果

在调试Chrome时,我发现它只是在执行第一页。从外观上看,不管出于什么原因,Chrome只执行循环中的第一个协议加载。

其他尝试

  • 我还尝试在循环中执行超时操作。认为这可能只是太快触发协议,而Chrome不喜欢这样。这也失败了。
  • 我甚至尝试过循环使用javascript来创建一个新的选项卡,而不是一个iframe。它给了我同样的结果。

有谁知道Chrome中的安全设置会防止定制协议同时加载到Chrome中吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 18:38:44

答案很简单,不要使用协议来发布数据。相反,我最终在电子中创建了一个web服务器,并通过URL传递数据。

代码语言:javascript
复制
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启动数据并将数据传递给电子,而不是iframes。

然后您只需将数据传递到类似:http://localhost:8080/data?{insertyourdatahere}中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55735666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档