2012-01-04 13 views
6

特定のページでdivを無効にするgreasemonkeyスクリプトを作成したいと思います。 ページの読み込み時に、DOMのどこにあるのか分かりませんが、常に呼び出されていることがわかります<div id = "alertPanel"> ....</div>特定のIDパターンを持つdivブロックを無効にするにはどうすればよいですか?

このdivを無効にする方法はありますか?

私のintial考えはの線に沿って何かあった。

var myDivs= document.getElementsByTagName('div'); 

for (i=0; i<myDivs.length; i++) 
{ 

    if (myDivs[i].<get id property somehow> = "alertPanel") 
    myDivs[i].style.visibility = 'hidden'; 
} 

が、あなたが言うことができるように私は平等のチェックのためにidプロパティにアクセスするにこだわっています。

Incidently、私はこれを書くために、テキストエディタを使用している - 私は、有効なHTMLでmyDivs[i].

答えて

12

それはidを持っている場合は、document.getElementByIdを使用することができます。

var div = document.getElementById("alertPanel"); 

それが存在する場合は、それを削除するか(おそらく悪い考えです)、または非表示にすることができます:

if (div) { 
    div.style.display = "none"; // Hides it 
    // Or 
    // div.parentNode.removeChild(div); // Removes it entirely 
} 

更新:別の答えにあなたのコメント日時:あなたの答えのための

感謝。あなたの文章は、iframeを持つページにも適用されますか?問題のdivはiframe内にあります。私はypurのソリューションを試してみましたが、残念ながらうまくいきませんでした。多分ページへのリンクに役立ちます:tennis.betfair.com私は無効にしたいdivがidのいずれかです。minigamesContainer

要素がiframeにある場合、あなたは、ドキュメントにgetElementByIdを呼び出す必要がありますそれはiframeにあります。iframeは別々のウィンドウであり、別々のドキュメントを持っているからです。あなたがiframeidがわかっている場合は、iframeインスタンスを取得するためにdocument.getElementByIdを使用して、その文書にアクセスするためにcontentDocumentを使用してから、「minigamesContainer」要素を取得するためにことgetElementByIdを使用することができます。

var iframe, div; 
iframe = document.getElementById("the_iframe_id"); 
if (iframe) { 
    try { 
     div = iframe.contentDocument.getElementById("minigamesContainer"); 
     if (div) { 
      div.style.display = "none"; 
     } 
    } 
    catch (e) { 
    } 
} 

try/catchはiframeのコンテンツにアクセスする可能性のあるセキュリティエラーのためにそこにあります;私はGreymemonkeyをよく理解していないので、SOPがそれに当てはまるかどうかを知ることができません。 。あなたがiframeidを知らないか、それが1つを持っていない場合、あなたはdocument.getElementsByTagNameでそれらを取得してから、ループによって、それらのすべてを単にループすることができた場合)

var iframes, index, iframe, div; 
iframes = document.getElementsByTagName("iframe"); 
for (index = 0; index < iframes.length; ++index) { 
    iframe = iframes[index]; 
    try { 
     div = iframe.contentDocument.getElementById("minigamesContainer"); 
     if (div) { 
      div.style.display = "none"; 
      break; 
     } 
    } 
    catch (e) { 
    } 
} 

参照:

+0

これは素晴らしいことです - ありがとうございます - でも、単に 'alertPanel'を探すのではなく、' alertPanel2'か 'alertPanel3'を隠そうと思ったのですが? (私はjavascriptの基礎を学ぼうとしています - 私は実験について少し神経質です。) –

1

に入力した後、あなたが特定のIDを有する唯一の要素を持つことができ、標準のJavaScriptエディタは、自動補完のリストを与えるだろうと推測します。だから、:

document.getElementById('alertPanel').style.visiblity = 'hidden'; 

しかし、あなたはまだ、すべてのdivのを反復処理し、そのIDを確認し、その後、これは動作するはずする必要がある場合:

if (myDivs[i].id == "alertPanel") myDivs[i].style.visibility = 'hidden'; 
+1

注 '視認性要素こと:NONE'ない:hidden'は'ディスプレイを持つ要素は、一方図示していない場合でも、画面上のスペースを占めます。 – kba

関連する問題