2017-06-05 9 views
-1

、1を使用することができます。adblockerで選択した要素をuserscriptで非表示にするにはどうすればいいですか?要素をブロックするには

var adSidebar = document.getElementById('ads'); 
if (adSidebar) { 
    adSidebar.parentNode.removeChild(adSidebar); 
} 

しかし、それは特定のサイトのために、特定の要素のためです。複数のサイトで複数の要素をブロックするには、userscriptを何度も繰り返す必要があります。各サイトでは、要素を何回もリストする必要があります。私はadblockerフィルタのリストを持っていますが、それを簡単に単一のuserscriptに変換する方法はありますか?

www.youtube.com###watch7-sidebar-contents 
www.youtube.com##.yt-masthead-logo-container 
www.facebook.com##._1uh-:nth-of-type(2) 
www.facebook.com##._2t-e > ._4kny:nth-of-type(1) 
www.facebook.com##._1uh-:nth-of-type(1) 
www.facebook.com##._50tj._2t-a 
www.facebook.com##._50ti._2s1y._5rmj._26aw._2t-a 
www.facebook.com###u_0_0 
www.facebook.com###fbDockChatBuddylistNub > .fbNubButton 

私は新しいウェブサイトで新しい要素をブロックする必要がある場合、私は単にuBlockからリストに行を追加するように、一つの場所で、そのリストを維持したいと思います。

+0

ますそのリスト用のパーサーを作成するか、既存のパーサを見つけたり変更したりする必要があります。 – wOxxOm

+0

これはなぜあなたが探していますか? –

答えて

1

すべてのドメインで実行されるユーザースクリプトを作成し、ドメインとクエリセレクタの広告ブロッカーから取得した文字列のリストを解析し、ウィンドウのドメインと一致するかどうかを確認し、もしそうなら、削除してください。私はそう下記行う1つの方法を提供してきました:...

// ==UserScript== 
// @name   Custom element hider 
// @namespace https://zachsaucier.com/ 
// @version  0.1 
// @description To show how one can hide elements like an ad blocker using userscripts 
// @author  Zach Saucier 
// @match  *://*/* 
// @grant  none 
// ==/UserScript== 

(function() { 
    'use strict'; 

    // Set our list of sites and elements to block 
    var blockList = [ 
     "www.youtube.com###watch7-sidebar-contents", 
     "www.youtube.com##.yt-masthead-logo-container", 
     "www.facebook.com##._1uh-:nth-of-type(2)", 
     "www.facebook.com##._2t-e > ._4kny:nth-of-type(1)", 
     "www.facebook.com##._1uh-:nth-of-type(1)", 
     "www.facebook.com##._50tj._2t-a", 
     "www.facebook.com##._50ti._2s1y._5rmj._26aw._2t-a", 
     "www.facebook.com###u_0_0", 
     "www.facebook.com###fbDockChatBuddylistNub > .fbNubButton" 
    ]; 

    // Get the window's hostname 
    var windowHostname = window.location.hostname; 

    // Iterate through the blocklist, hiding elements as needed 
    for(var i = 0; i < blockList.length; i++) { 
     var entryParts = blockList[i].split('##'); 

     // Compare the hostnames; Only remove elements if they match 
     if(windowHostname === entryParts[0]) { 
      // Find the elements if they exists 
      var matchedElements = document.querySelectorAll(entryParts[1]); 

      // Actually remove the element(s) that match 
      for(var j = 0; j < matchedElements.length; j++) { 
       var matchedElem = matchedElements[j]; 

       matchedElem.parentNode.removeChild(matchedElem); 
      } 
     } 
    } 
})(); 

私はあなたが広告ブロッカー自体がこれを行うことができたときにこれを行うにはuserscriptを書きたいと思う理由はわからないけど

+0

@Ookerこれは別の質問です;) –

+0

私は知っている、ちょうど情報を知らせたい。それらの質問に対する回答を提供してくれてありがとう – Ooker

関連する問題