Цикл по пользовательскому протоколу с Chrome - PullRequest
1 голос
/ 17 апреля 2019

В настоящее время я перебираю пользовательский протокол для передачи информации в приложение 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);
}

Приведенный выше код является псевдокодом того, как я пытаюсь достичь этого.

Expectation

Я ожидаю, что он зациклится 5 раз и передаст данные в приложение Electron. Как уже упоминалось, похоже, что это работает только с IE и Firefox.

Фактические результаты

Во время отладки Chrome я обнаружил, что он выполняет только первую страницу. Судя по всему, по какой-то причине Chrome выполняет только первую загрузку протокола в цикле.

Другие попытки

  • Я также пытался сделать тайм-аут в цикле. Думая, что, возможно, это просто слишком быстрый запуск протокола, и Chrome это не нравится. Это тоже не удалось.

  • Я даже пытался просто зацикливаться на JavaScript, который создает новую вкладку, вместо iframe .. и это дает мне тот же результат.

Кто-нибудь знает о настройке безопасности в Chrome, которая запрещает загрузку пользовательских протоколов в Chrome несколько раз одновременно?

1 Ответ

0 голосов
/ 19 апреля 2019

Ответ был довольно прост, не используйте протокол для POST-данных. Вместо этого я закончил тем, что создал веб-сервер в электронике, и передал данные через 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 вместо iframes.

Тогда вы просто передаете данные в виде: http://localhost:8080/data?{insertyourdatahere}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...