Chromeのアドオンでwebページ内にiframeで存在するgoogle hangoutの情報が更新されたら通知するようにしたいです。
JavaScriptのObserverで監視し、更新されたら、別の動作をさせようとしているのですが、メッセージを更新しても監視後の動きに入りません。
idが取れているのでiframeが完全に読み終わったときに作動させるところまではうまくいっているはずですが、方法についてご教授ください。
window.addEventListener("load", main, false);
function main(e) {
const jsInitCheckTimer = setInterval(jsLoaded, 1000);
function jsLoaded() {
if (document.querySelectorAll('[id^="wb"]').length > 1) {
clearInterval(jsInitCheckTimer);
const iframeElem = document.querySelectorAll('[id^="wb"]');
const target = iframeElem[0];
const iframeDocument = target.document;
const iframeDocument = target.contentDocument;
console.log(target.id);
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
alert("Google hangoutに新しいお知らせが到着しました。");
});
});observer.observe(iframeDocument, { attributes: true, // 属性変化の監視 characterData: true, // テキストノードの変化を監視 childList: true, subtree: true }); }
}
}
[2021/03/11追記]
上記で実行したエラーは下記になります。
Uncaught TypeError: Failed to execute 'observe' on 'MutationObserver': parameter 1 is not of type 'Node'. at jsLoaded (content.js:14)
暫定ですが、クロスオリジン対応としてChromeのアドオンに「Allow CORS: Access-Control-Allow-Origin」(https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf?hl=ja)を追加したり、
下記リンクを参照させていただき起動時にオプションをつけてエラーを無視する方法をとっています。
https://webbibouroku.com/Blog/Article/cors-browser-setting