определить, работает ли сеть в приложении Chrome или электронном

Здравствуйте, я создаю веб-сайт, который будет отображать различный контент в браузере и в приложении для электроники

Я наткнулся на этот код (process.versions.electron != 'undefined' && process.versions.electron != null), но он не работает в браузере и в электронном режиме, и я пытаюсь скрыть это кнопка с идентификатором biblioteca

if(process.versions.electron != 'undefined' && process.versions.electron != null){
    document.getElementById("biblioteca").style.display = "block";
}else{
    document.getElementById("biblioteca").style.display = "none";
}
boton en mi index.html
<button id="biblioteca">Biblioteca</button>

, чтобы быть более конкретным, я хотел бы создать, чтобы сеть обнаруживала, находится ли она в обычном браузере, например, Opera, Firefox, Chrome Etx или непосредственно в браузере. от электрона js

1
задан 27.11.2019, 03:10
2 ответа

Ты можешь использовать признак webPreferences.preload в выборах, назвав BrowserWindow( ).

Это позволяет тебе загружать scripts помещение перед любым другим рукописным шрифтом страницы , но используя тот же DOM.

Идея состоит в том, чтобы использовать это, чтобы создавать отметку , которые позволяли бы тебе отличать, если ты находишься в electron или в браузере нормальных :

Например, давайте предполагать минимальный проект в electron:

/
      package.json
      index.js
      preload.js

Файл preload.js достаточно простой:

window['ThisPageIsRunningInElectron'] = 'UnTextoRaroQueSeaDifícilEncontrarEnPáginasNormales' ;

И в твоем главном файле index.js, где ты создаешь окно браузера, ты делаешь:

MainWindow = new ElectronModule.BrowserWindow( {
  width: 800,
  height: 600,
  title: 'Concept Test',
  webPreferences: {
    webSecurity: false,
    preload: PathModule.join( __dirname, '/preload.js' ),
    nodeIntegration: false,
    allowRunningInsecureContent: true,
    defaultEncoding: 'UTF-8',
  }
} );

, Поскольку ты видишь, мы выводим из строя интеграция node со страницей, чтобы гарантировать максимальную совместимость, и показываем файл preload, который нужно загружать.

Как только был загружен твой унифицированный указатель ресурса, изнутри твоей страницы .html, ты можешь подтверждать легко, находишься ли или нет ты в electron:

if( window['ThisPageIsRunningInElectron'] === 'UnTextoRaroQueSeaDifícilEncontrarEnPáginasNormales' ) {
  // Este código se ejecutará solo si estamos en electron.
} 

Конечно, твоего файла preload.js может быть все сложное, что ты захотел . Подумай, что к этому файлу относится электрон как будто ты делал

<script src="file:///preload.js"></script>

а следовательно ты можешь помещать весь код, в котором ты нуждаешься, включено загружать другие унифицированный указатель ресурса (но он помнит, что этот scripts так нагруженные только будет доступен в electron).

1
ответ дан 01.12.2019, 10:46
  • 1
    функционируй с loadURL("http://localhost/");? из-за которого app cargará унифицированный указатель ресурса не файл html локальный – Max 27.11.2019, 05:57
  • 2
    @Max Правда - что не. Он играет роль больше 1 añ или что я сделал это доказательство. Segú n doc, только служит для локальных файлов. Но подумай, что ты поместил больше вещей ahí более отличная será твой pá gina pá gina нормальный. – Trauma 27.11.2019, 06:12

Ты составляешь твое собственное решение. Код электрона, и chrome несмотря на то, что они были бы похожими, они могли бы содержать различия. В твоем примере, браузер не имеет доступа к process. В то время как среда в nodejs, если бы у него могло быть это. С другой стороны, есть способы обнаруживать, что рукописный шрифт работает в node. Посредством проверки process:

(process === undefined) & & (process.release.name === 'node')

Однако, будь должен иметь в виду, что это не значит, что Ваш рукописный шрифт работает в electron.js

, Так как Вы составляете ваше собственное решение, он мог бы добавлять флаги к различным builds производства. Немного такой простой как process.targetEnv = "электрон" и подтверждать это в начале могло бы функционировать.

0
ответ дан 01.12.2019, 10:46