[解決済み] electronでDOM要素にアクセスするには?
2023-06-25 18:29:38
質問
のボタンに機能を追加しようとしています。
index.html
ファイルは以下の通りです。
の中にボタン要素があります。
index.html
<button id="auth-button">Authorize</button>
で
main.js
の中に
require('crash-reporter').start();
console.log("oh yaeh!");
var mainWindow = null;
app.on('window-all-closed', function(){
if(process.platform != 'darwin'){
app.quit();
}
});
app.on('ready',function(){
mainWindow = new BrowserWindow({width:800, height : 600});
mainWindow.loadUrl('file://' + __dirname + '/index.html');
var authButton = document.getElementById("auth-button");
authButton.addEventListener("click",function(){alert("clicked!");});
mainWindow.openDevTools();
mainWindow.on('closed',function(){
mainWindow = null;
});
});
しかし、以下のようにエラーが発生します。
Uncaught Exception: ReferenceError: document is not defined
電子アプリケーションを構築する際に、DOM オブジェクトにアクセスすることはできますか。
どのように解決するのですか?
DOM は ではなく はメインプロセスではアクセスできず、所属するレンダラーでのみアクセスできます。
には
ipc
モジュールがあり
メインプロセス
と同様に
レンダラープロセス
であり、同期/非同期メッセージによってこの 2 つの間の通信を可能にします。
また リモート モジュールを使用して、レンダラーからメイン プロセス API を呼び出すこともできますが、その逆を可能にするものはありません。
ユーザーのアクションに対する応答として、メインプロセスで何かを実行する必要がある場合は
ipc
モジュールを使って関数を呼び出し、その結果をレンダラーに返します。
ipc
.
Wolfgang がコメントで提案したように、コードは実際の API (v0.37.8) を反映するように更新されました。
のスクリプト例です。
index.html
:
var ipc = require('electron').ipcRenderer;
var authButton = document.getElementById('auth-button');
authButton.addEventListener('click', function(){
ipc.once('actionReply', function(event, response){
processResponse(response);
})
ipc.send('invokeAction', 'someData');
});
そして、メインプロセスでは
var ipc = require('electron').ipcMain;
ipc.on('invokeAction', function(event, data){
var result = processData(data);
event.sender.send('actionReply', result);
});
関連
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] どのDOM要素にフォーカスがあるかを調べるには?
-
[解決済み] JavaScript で DOM ノードのすべての子要素を削除する
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
-
[解決済み] TypeScriptのdeclare classとinterfaceの違いとは?
-
[解決済み] Chromeの拡張機能開発にWebStormを使用するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Google maps API V3 - 同一地点に複数のマーカーを設置する。
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] JavaScriptでの大文字小文字を区別しない正規表現
-
[解決済み] react-routerのハッシュフラグメントからクエリパラメータを取得する
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
-
[解決済み] Reactメモを使うべきではない場合とは?
-
[解決済み] HTML要素にスクロールバーがあるかどうかをチェックする
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
-
[解決済み] これは純関数ですか?