2012-01-04 10 views
6

मैं एक निश्चित पृष्ठ पर एक div अक्षम करने के लिए एक greasemonkey स्क्रिप्ट लिखना चाहता हूँ। पृष्ठ के किसी भी दिए गए लोड पर मुझे नहीं पता कि डीओएम में कहां होगा, लेकिन मुझे पता है कि इसे हमेशा <div id = "alertPanel"> ....</div>एक निश्चित आईडी पैटर्न वाले div ब्लॉक को अक्षम कैसे करें?

मैं इस div को अक्षम करने के बारे में कैसे जाउंगा?

मेरे आरंभिक विचार की तर्ज पर कुछ इस प्रकार थे:

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'; 
} 

लेकिन जैसा कि आप बता सकते हैं मैं एक समानता जांच करने के लिए आईडी प्रॉपर्टी एक्सेस पर अटक कर रहा हूँ।

संयोग से, मैं एक पाठ संपादक का उपयोग कर रहा हूँ इस लिखने के लिए - मैं अनुमान लगा एक मानक जावास्क्रिप्ट संपादक 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 
} 

अद्यतन: एक और जवाब पर अपनी टिप्पणी पुन:

अपने जवाब के लिए धन्यवाद। क्या आपका स्टेटम इफ्रेम के साथ एक पेज पर भी लागू होता है। सवाल में div एक आईफ्रेम में है। मैंने यपुर समाधान की कोशिश की है और यह दुर्भाग्य से काम नहीं करता है। शायद पृष्ठ पर एक लिंक में मदद मिलेगी: tennis.betfair.com div मैं अक्षम करना चाहते आईडी के साथ एक है: तत्व एक iframe में है, तो minigamesContainer

, तो आप दस्तावेज़ पर getElementById कॉल करनी होगी iframe में है, क्योंकि iframe एस अलग-अलग खिड़कियां हैं और अलग-अलग दस्तावेज़ हैं। आप iframe की id जानते हैं, तो आप उपयोग कर सकते हैं document.getElementByIdiframe उदाहरण प्राप्त करने के लिए, और फिर 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 आईफ्रेम की सामग्री तक पहुंचने वाली संभावित सुरक्षा त्रुटि के कारण है; मुझे यह जानने के लिए पर्याप्त नहीं है कि SOP पर लागू होता है या नहीं। मुझे लगता है कि यह नहीं है, लेकिन बेहतर सुरक्षित है .. ।)

आप iframe की id पता नहीं है या अगर यह एक नहीं है, तो आप उन्हें 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

यह बहुत अच्छा काम करता है - धन्यवाद - लेकिन अगर 'सतर्क पैनेल' की तलाश करने के बजाय, मैं ** ** भी 'अलर्टपैनेल 2' या 'अलर्टपैनेल 3' छिपाना चाहता था? (मैं जावास्क्रिप्ट की मूल बातें सीखने की कोशिश कर रहा हूं - मैं प्रयोग करने के बारे में थोड़ा परेशान हूं।) –

1

में टाइप मान्य HTML में के बाद स्वत: पूर्णता सूची देना होगा आप कुछ आईडी के साथ ही तत्व हो सकता है। तो:

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

लेकिन अगर आप अभी भी सभी div के पुनरावृति और उनके पहचान पत्र की जांच करने की जरूरत है, तो यह काम करना चाहिए:

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

नोट के साथ 'दृश्यता एक तत्व है कि: hidden' स्क्रीन पर स्थान में समा जाता तब भी जब नहीं दिखाया जबकि साथ' प्रदर्शन एक तत्व: none' नहीं करता है। – kba