2017-10-30 7 views
0

twitch.tvからVodのタイトルを削除するChrome拡張機能のこのコードで何が問題になっていますか?twitch.tvのHTML要素を削除しても動作しない

content.js

var text = document.getElementsByTagName('video-preview-card__title video-preview-card__title--twoline overflow-hidden relative mg-t-05 font-size-5'); 
for (var i = 0, l = text.length; i < l; i++) { 
    text[i] = text[i].style.display='none'; 
} 

manifest.jsonを:すべての

{ 
    "manifest_version": 2, 

    "name": "Remove Twitch Vod Title HTML", 
    "version": "0.1.0", 
    "description": "Removes Twitch Vod Title HTML", 

    "content_scripts": [{ 
    "js": ["content.js"], 
    "matches": ["https://go.twitch.tv/*", "https://www.twitch.tv/*"] 
    }] 

} 
+1

twitch.tvは[SPA](https://en.wikipedia.org/wiki/Single-page_application)なので、MutationObserverを使用するか、どのページイベントが使用されているかを知る必要があります。答え:[JavaScript/jQuery DOMの変更リスナーはありますか?](// stackoverflow.com/a/39508954) – wOxxOm

+1

トピックを作成するには質問を編集してください:問題を再現する[mcve]を含める*。 Chrome拡張機能やFirefox WebExtensionsの場合は、* manifest.json *とバックグラウンド、コンテンツ、ポップアップスクリプト/ HTML、およびウェブページのHTML /スクリプトを含める必要があります。 (1)必要な動作、(2)特定の問題またはエラー、および(3)それを再現するために必要な最短のコードを含める必要があります。質問自体に*。また、[ここではどのような話題を聞くことができますか?](/ help/on-topic)、[ask]を参照してください。 – Makyen

答えて

0

まず、あなたのgetElementsByTagNameのコールが間違って見える、あなたが見る、それに単一tagNameをを渡す必要があります

もっと複雑なセレクタをお探しの場合は、あなたはhttps://developer.mozilla.org/en-US/docs/Web/API/Document/querySelectorAll

はまた

text[i] = text[i].style.display='none'; 

を行う必要がそれは、それに加えてちょうど

text[i].style.display='none'; 

にあなたが探しているDOM要素を変更する必要がありますが存在しない参照、querySelectorAllを使用する必要がありますDOMがロードされた後に非同期的に作成される可能性があります。

汚いが単純な解決策は、コードをsetIntervalにラップして、数秒(またはミリ秒)ごとにチェックすることです。 例、毎秒を確認してください。

setInterval(function() { 
    var text = document.querySelectorAll(...); 
    for (var i = 0, l = text.length; i < l; i++) { 
    text[i].style.display='none'; 
    } 
}, 1000); 

をこのソリューションは、ページが何らかの理由で彼らの表示状態をリセットする場合には、再び要素を非表示になります。

MutationObserver APIを使用して、より堅牢でパフォーマンスに優れたソリューションを検討することをお勧めします。

関連する問題