5

मैं मेरे Chrome की webRequest एपीआई को समझने में मदद करने के लिए नकल क्या this answer साथ लेकिन नाम स्थान है, जो अब जरूरत है की प्रयोगात्मक भाग बिना किया जाता है के द्वारा एक क्रोम एक्सटेंशन बनाने के लिए के बाद से webRequest अब प्रयास कर रहा हूँ का उपयोग कर क्रोम के ट्रंक में।सरल अग्रेषण गूगल क्रोम webRequest एपीआई

मेरी पृष्ठभूमि पेज में मैं कोड है:

<!DOCTYPE html> 
<html> 
    <head> 
    <script> 
function interceptRequest(request) { 
    return { redirectUrl: 'http://www.yahoo.com' } 
} 
chrome.webRequest.onBeforeRequest.addListener(interceptRequest, { urls: ['*://*.google.com/*'] }, ['blocking']); 
    </script> 
    </head><body></body> 
</html> 

मेरी मैनिफ़ेस्ट फ़ाइल में मेरे पास है:

{ 
    "name": "My Extension", 
    "version": "0.1", 
    "background_page": "background.html", 
    "permissions" : [ 
    "webRequest", 
    "webRequestBlocking", 
    "*://*/*" 
    ] 
} 

पर पहले से प्रश्न पूछा आधार पर, मैं http://www.yahoo.com को अग्रेषित किया जाना चाहिए जब मैं का उपयोग https://www.google.com और मेरा एक्सटेंशन लोड हो गया है, हालांकि, https://www.google.com लोड अग्रेषण प्रभाव के बिना लोड करता है। Chrome में webRequest API का उपयोग करके किसी उपयोगकर्ता को एक यूआरआई से दूसरे में अग्रेषित करने के लिए मुझे क्या करने की आवश्यकता है?

+0

यह अजीब है। केवल मैं यह सोच सकता हूं कि आप क्रोम डॉक्स से अपने पृष्ठभूमि पृष्ठ में किसी भी सिंक्रोनस XHR या किसी भी स्क्रिप्ट टैग को ऑनलाइन संसाधनों से लोड नहीं कर रहे हैं। – gengkev

उत्तर

3

आपका यूआरएल मिलान पैटर्न सही नहीं है। '*: //www.google.com/' सभी प्रोटोकॉल 'को, *: // www आप बस स्लैश जोड़ने की जरूरत:

{urls: ['https://www.google.com/']} 

वैकल्पिक रूप से, आप इस्तेमाल कर सकते हैं। google.com/* ' केवल डोमेन परे मिलान करने के लिए, और ' *: http://code.google.com/chrome/extensions/trunk/match_patterns.html

: //*.google.com/* ' सभी उप डोमेन, प्रोटोकॉल और रास्तों, आदि

देखें मैच के लिए

+0

प्रतिक्रिया के लिए धन्यवाद, लेकिन इन समाधानों में से किसी ने ब्राउज़र को याहू को अग्रेषित नहीं किया। क्या आप उपर्युक्त या शायद कुछ भी गलत में कुछ और गलत नहीं देखते हैं? –

+1

मैंने आपके कोड के साथ एक एक्सटेंशन बनाया है और उपरोक्त मेरी टिप्पणी में वर्णित 'urls' फ़ील्ड में पिछला स्लैश डालने के बाद यह मेरे लिए ठीक काम कर रहा है। आपके द्वारा देखी गई एकमात्र चीज आपकी मेनिफेस्ट फ़ाइल में 'content_scripts' है ... क्या आपके पास 'content.js' फ़ाइल है? आपको इस कार्यक्षमता के लिए इसकी आवश्यकता नहीं है। क्या आपके सभी पथ सही हैं (background.html और content.js आपके एक्सटेंशन की जड़ में हैं)? साथ ही, 'अपने पृष्ठभूमि कोड में अपने जेएस कोड के चारों ओर टैग करें (मुझे लगता है कि यह लपेटा गया था - यह एक HTML फ़ाइल है, आखिरकार, जेएस फाइल नहीं)। – rgthree

+0

मैनिफेस्ट से '/' के अलावा और content.js को छोड़कर, मैं http://www.google.com तक पहुंचने पर पेज को आगे बढ़ाने में असमर्थ था। मैंने उपरोक्त मेरी फ़ाइलों का स्रोत अधिक व्यापक होने के लिए अद्यतन किया है (अब इसमें फाइलों की सामग्रियों की पूरीता शामिल है) और मैनिफेस्ट में अनावश्यक वस्तुओं को निकालने के लिए। क्या उपरोक्त फ़ाइलों में कुछ भी खड़ा है जो आपके द्वारा बनाए गए संस्करण से विचलित है जो कार्यात्मक है? मैं इसे काम करने में वास्तव में रूचि रखता हूं। –