5

मैं एक ऐसा एक्सटेंशन लिखना चाहता हूं जो सभी वेब ट्रैफ़िक को किसी विशिष्ट डोमेन पर रीडायरेक्ट करता है, तो wikipedia.org को इंटरमीडिएट पृष्ठ पर कहें जो कुछ कहता है, "वाह, बब। आप विकिपीडिया पर जा रहे हैं । क्या तुम इसके बारे में निश्चित हो?" हां और कोई बटन के बाद।क्रोम एक्सटेंशन: विशिष्ट वेब अनुरोध के जवाब में कस्टम HTML पृष्ठ पर रीडायरेक्ट कैसे करें?

मैं एक विशिष्ट यूआरएल अनुरोध का जवाब कैसे दूंगा और वांछित पृष्ठ को एक कस्टम के साथ बदल सकता हूं जब यह डोमेन में "wikipedia.org" वाला पृष्ठ होने की स्थिति को पूरा करता है?

उत्तर

9

आप हाँ और कोई बटन के साथ इस का उपयोग करते हुए webRequest सुविधा, तो पृष्ठभूमि पृष्ठ, और कस्टम पेज कर सकते हैं। उदाहरण के लिए, पृष्ठभूमि पृष्ठ में कुछ इसी तरह लिखें:

var URLStorage; 

function interceptRequest(request) 
{ 
    if(request && request.url) 
    { 
    if(request.type == "main_frame") // new page/site is loading in main window 
    { 
     if(request.url.indexOf("wikipedia.org") > -1) 
     { 
     URLStorage = request.url; 
     return {redirectUrl: chrome.extension.getURL("confirmation.html")}; 
     } 
    } 
    } 
} 

chrome.webRequest.onBeforeRequest.addListener(interceptRequest, {urls: ["*://*/*"]}, ['blocking']); 

यह उदाहरण सख्ती से जांच नहीं की जाती है, तो विकिपीडिया डोमेन में बताया गया है, लेकिन मैं स्पष्टता के लिए ऐसा किया। मेरे वास्तविक कोड में एक विशेष वर्ग 'यूआरएल' का प्रयोग किया जाता है, जो पारसी यूआरएल पास करते हैं और इसके प्रत्येक भाग के लिए गुण प्रदान करते हैं, इसलिए उन्हें चुनिंदा जांच की जा सकती है।

confirmation.html में बस 2 बटन रखें, और उन्हें उचित कोड पर बाध्य करें, उदाहरण के लिए अनुरोधित साइट पर रीडायरेक्ट करना, यदि उपयोगकर्ता ने "हाँ" का उत्तर दिया है।

$('#okbutton').click(function() 
{ 
    document.location.href = chrome.extension.getBackgroundPage().URLStorage; 
}); 

भूलना अपने प्रकट की permissions अनुभाग में "webRequest" और "webRequestBlocking" का उल्लेख न करें।

-2

आप एक सामग्री स्क्रिप्ट बना सकते हैं जो उपयोगकर्ता द्वारा आने वाले प्रत्येक पृष्ठ में जावास्क्रिप्ट कोड इंजेक्ट करता है। आपकी सामग्री स्क्रिप्ट में आप जेएस को अमान्य यूआरएल के खिलाफ वर्तमान यूआरएल जांच सकते हैं और तदनुसार उन्हें रीडायरेक्ट कर सकते हैं।

मुझे लगता है कि पृष्ठ के लोड होने के बाद सामग्री स्क्रिप्ट लोड हो जाती हैं, इसलिए एक संक्षिप्त अवधि हो सकती है जहां उपयोगकर्ता उस पृष्ठ को देखता है जिसे वे ढूंढ रहे थे और फिर आपके लैंडिंग पृष्ठ पर रीडायरेक्ट हो जाते हैं। यहाँ सामग्री स्क्रिप्ट के डॉक्स की जाँच करें: http://developer.chrome.com/extensions/content_scripts.html

{ 
    "name": "My extension", 
    ... 
    "content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css": ["mystyles.css"], 
     "js": ["jquery.js", "myscript.js"] 
    } 
    ], 
    ... 
} 

"मेल खाता है" आप

"matches": ["http://www.*.com/*", "http://*.com/*, "https://www.*.com/*", "https://*.*.com/*] 

को कुछ इसी तरह की सरणी बनाना चाहिए और "js" अपने जावास्क्रिप्ट फ़ाइल का नाम हो सकता है कि आप पृष्ठ में इंजेक्शन लिखने के लिए उपयोग करना चाहते हैं।

कुछ की तरह:

if(window.location == "http://wikipedia.com"){ 
    window.location.href = "http://mysplashpage.com"; 
} 
बेशक

, कि जे एस सभी उदाहरणों में काम नहीं करेगा, उदाहरण के लिए, यदि उपयोगकर्ता लक्ष्य वेबसाइट की एक निर्देशिका करने के लिए प्राप्त करने की कोशिश कर रहा है। के रूप में यहां बताए गए तुम शायद कुछ regex चेक या प्रोटोकॉल और होस्ट की तरह कुछ अन्य कार्य करने की आवश्यकता होगी: http://css-tricks.com/snippets/javascript/get-url-and-url-parts-in-javascript/

+3

आपके मिलान पैटर्न में से कोई भी वैध नहीं है। [दस्तावेज़ीकरण] पढ़ें (http://developer.chrome.com/extensions/match_patterns.html)। मैं 'run_at" का उपयोग करने का सुझाव देता हूं: "document_start" 'ताकि पृष्ठ प्रस्तुत करने से पहले पुनर्निर्देशन हो। –

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