Macにて、Electronでアプリ開発をしています。
レンダラプロセスでwebviewを用い、外部のHTMLを読み込み、さらにpreloadでJavaScriptを埋め込んで実行することで、外部のHTMLに手を加えることなく、その内部の情報を取り出そうとしています。
lang
1<!-- レンダラプロセス --> 2 <div id="webview_wrapper"> 3 <webview id="view" 4 src='index3.html' 5 autosize="on" 6 preload="view.js" 7 ></webview> 8 </div>
preloadするJavaScriptにおいて、MutationObserverにより、外部のHTMLで特定のidを持つ要素の監視を試みました。
しかし、下記のコードでテストしてみたところ、alertが発火しません。
lang
1//preload.js 2let target = document.getElementById('quote'); //'quote'は外部のHTML内のid 3 4const observer = new MutationObserver((MutationRecords) => { 5 let mutation = MutationRecords.target; 6 alert('mutation'); 7}); 8 9const config = {childList :true}; 10observer.observe(target, config);
何か原因として考えられることはあるでしょうか。
・補足
targetの存在、及び内容の変化については確認できています。
webviewで読み込んでいるHTMLは次のようなものです。(参考:https://dotinstall.com/lessons/basic_electron/36206)
起動すると、アプリの画面上で、クリックのたびに格言('quote'の内容)が変化するのを確認できます。
<body> <p id='quote'>Just do it!</p> <script> 'use strict'; const quote = document.getElementById('quote'); const quotes = [ 'Stay hungry, stay foolish', 'Done is better than perfect', 'Ask, do not tell', ]; window.addEventListener('click',function(){ //クリックを契機に起動 quote.innerHTML = quotes[Math.floor(Math.random()*quotes.length)]; }); </script> </body>
あなたの回答
tips
プレビュー