###概要
現在chromeの拡張機能を作成しています。
(ざっくり言うと)runtime.onMessage.addListenerで別のjavascriptファイルから値を受け取り、その値を元にツイートを検索するような機能を作成しています。
twitterのツイートは非同期で取得されているのでMutationObserverを利用して要素に変化があるたびツイートを読み込んで検索条件に当てはまるか判断する、というような動作をしたいのですが、そこで以下のようなエラーが出ます。
error
1Error in event handler: TypeError: Failed to construct 'MutationObserver': parameter 1 is not of type 'Function'. 2 at serch
(エラーが出る場所はここです↓)
javascript
1var observer = new MutationObserver(deleteTweet(message))
###コード全体
javascript
1chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) { 2 console.log(message.text) 3 4 serch(message) 5 6 sendResponse() 7 return 8}) 9 10function serch (message) { 11 function deleteTweet (message) { 12 console.log('doing') 13 // 表示されているツイートの本文が含まれている要素を取得 14 let articles = document.querySelectorAll("div[lang='ja'] > span") 15 16 if (articles.length > 0) { 17 Array.prototype.forEach.call(articles, async (article) => { 18 if (!article.innerText.includes(message.text)) { 19 let tweet = article.closest('article') 20 let range = tweet.parentNode 21 range.style.display = 'none' 22 } 23 }) 24 } 25 } 26 27 // オブザーバーの作成、ここでエラーが出る 28 var observer = new MutationObserver(deleteTweet(message)) 29 var target = document.getElementsByTagName('section')[0] 30 observer.observe(target, { 31 childList: true, 32 subtree: true 33 }) 34}
###わからないこと
一度deleteTweet(function)が実行されたのちエラーが出るためオブザーバーを作成した時点で一度引数に設定したfunction(ここではdeleteTweet)が実行されていることになるのですが、なぜobserver.observeする前に実行されるのかが理解できていません。
またエラーにはdeleteTweetはfunctionではないとありますが、function以外の何者でもないのでどうすれば解決するのか全くわかりません。
TypeError: "x" is not a function←この資料などを読みましたが、今のところ解決方法が全く思いつきません。
初歩的な質問で申し訳ありませんが、何かアドバイス等ありましたら教えていただけると大変助かります…。よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/20 10:38
2021/01/20 14:13