2011-06-10 6 views
7

क्रोम सामग्री स्क्रिप्ट का उपयोग करके मैं अपनी सामग्री लोड होने से पहले किसी वेबपृष्ठ में कई iframes को हटाना चाहता हूं।डीओएम संसाधित होने से पहले Google क्रोम सामग्री स्क्रिप्ट का उपयोग करके मैं एक वेब पेज को कैसे संशोधित कर सकता हूं?

मुझे पता चला कि संपत्ति का उपयोग करके run_at: document_start को प्रकट करता है, मेरी जावास्क्रिप्ट को मुख्य पृष्ठ अनुरोध के ठीक बाद निष्पादित किया जाता है और डीओएम संसाधित होने से पहले और छवियों, iframes इत्यादि लोड हो जाते हैं। Logicaly इस बिंदु पर डोम संरचना availabel नहीं है और मैं जैसे आदेशों का उपयोग करते पेज को संशोधित नहीं कर सकते हैं:

myelement=document.getElementById('iframeX'); 

myelement.parentNode.removeChild(myelement); 

मैं कैसे पहुँच सकती है और फिर reqeusted पेज डेटा को संशोधित कर सकते हैं?

उत्तर

7

आप document_start पर अपनी सामग्री स्क्रिप्ट को गति प्रदान और एक beforeload श्रोता जोड़ने की जरूरत है - आप चुनिंदा लोड होने से सामग्री को ब्लॉक करने के लिए और फिर फ्रेम कि सामग्री लोड करने की कोशिश की हटाने event.preventDefault उपयोग कर सकते हैं:

document.addEventListener('beforeload', function(event) { 
     if (event.url.match('facebook')) { 
      event.preventDefault(); 
      $(event.target).remove(); 
     } 
    }, false); 

मेरे पास blogged about an equivalent approach to using the beforeload event for Firefox भी है।

+0

जवाब के लिए धन्यवाद! मुझे कोड को थोड़ा सा काम करना था (क्रोम विशिष्ट हो सकता है): 'document.addEventListener ('preload', फ़ंक्शन (ईवेंट) { अगर (event.url.match (/facebook.com/)) { event.preventDefault(); $ (event.target) .remove();} \t \t }, सच); ' बीटीडब्ल्यू: आपको पता था कि मेरा मतलब फेसबुक था :) – Cornelius

+1

हा, अंधे भाग्य! मुझे लगता है कि फेसबुक एजेक्सी ऐप की श्रेणी में है कि बहुत से लोग संशोधित करना चाहते हैं :-) –

+0

ध्यान दें कि 'event.preventDefault()' सामग्री को क्रोम द्वारा पुनर्प्राप्त करने से नहीं रोकता है (मुझे नहीं लगता कि कोई भी है अभी तक ऐसा करने का तरीका)। यह अभी भी डाउनलोड हो जाता है, बस निष्पादित नहीं किया जाता है (यदि यह एक स्क्रिप्ट है)। – Dan

2

इस के लिए manifest.json को शामिल करना चाहिए content_scripts की तरह:

"content_scripts": [ 
    { 
     "matches": ["*://*/*"], 
     "js": [ "scan.js" ], 
     "run_at": "document_start", 
     "all_frames" : true 
    } 
] 
+1

https://developer.chrome.com/extensions/content_scripts.html – HaveAGuess

संबंधित मुद्दे

 संबंधित मुद्दे