2012-01-29 16 views
14

में कस्टम कार्यक्षमता जोड़ना क्या Google-क्रोम में कस्टम फ़ंक्शन होना संभव है जो हमेशा कंसोल में उपलब्ध होगा (चाहे कोई पृष्ठ लोड हो) चाहे? उदाहरण के लिए, मैं इको नामक एक फ़ंक्शन लेना चाहता हूं जो कंसोल.लॉग के आसपास सिर्फ एक रैपर होगा। यह सिर्फ कुछ टाइपिंग बचाता है लेकिन बाद में मैं कुछ उपयोगी डीबग कार्यक्षमता बनाना चाहता हूं।क्रोम के कंसोल

+1

शायद आप एक प्लगइन बना सकते हैं। कंसोल वर्तमान पृष्ठ के सापेक्ष काम करता है, इसलिए इसे करने योग्य होना चाहिए। प्लगइन दिशा को इंगित करने के लिए – Blender

+0

धन्यवाद। चलो देखते हैं कि मैं वास्तव में उस आवरण के लिए एक "आलसी पर्याप्त" हूं ... – clime

उत्तर

16

वैसे यह पूरा करना बहुत आसान है। आपको content script बनाने की आवश्यकता है। इस स्क्रिप्ट को किसी भी पेज में इंजेक्शन दिया जाएगा और आपके कंसोल में उपयोग किए जाने वाले कुछ आवश्यक वैश्विक फ़ंक्शन तैयार किए जाएंगे। सबसे चुनौतीपूर्ण हिस्सा यह है कि उन कस्टम सामग्री स्क्रैप फ़ंक्शंस को आपके वास्तविक window ऑब्जेक्ट का हिस्सा बनने के लिए कैसे करें, क्योंकि आम तौर पर आप उन सामग्री या चरों तक नहीं पहुंच सकते हैं जिन्हें आप अपनी सामग्री स्क्रिप्ट में शेष जावास्क्रिप्ट कोड से परिभाषित करते हैं जो सामग्री के भीतर नहीं है स्क्रिप्ट। सामग्री स्क्रिप्ट तथाकथित अलग वातावरण में चलती है।

सामग्री स्क्रिप्ट एक अलग वातावरण में निष्पादित एक विशेष वातावरण में निष्पादित। उनके पास इंजेक्शन किए गए पृष्ठ के डीओएम तक पहुंच है, लेकिन पृष्ठ द्वारा बनाए गए किसी भी जावास्क्रिप्ट चर या फ़ंक्शंस के लिए नहीं। यह प्रत्येक सामग्री स्क्रिप्ट को देखता है जैसे कि उस पृष्ठ पर कोई अन्य जावास्क्रिप्ट निष्पादन नहीं है जिस पर यह चल रहा है। वही विपरीत है: पृष्ठ पर चल रहे जावास्क्रिप्ट किसी भी फ़ंक्शन को कॉल नहीं कर सकता है या सामग्री स्क्रिप्ट द्वारा परिभाषित किसी भी चर का उपयोग नहीं कर सकता है।

लेकिन फैंसी वर्कअराउंड हैं।
आप इस प्रकार अपने मैनिफ़ेस्ट फ़ाइल को परिभाषित:

manifest.json

{ 
    "name": "Content script", 
    "version": "0.1", 
    "manifest_version": 2, 
    "content_scripts": [{ 
     "matches": ["http://*/*"], 
     "js": ["console.js"] 
    }] 
} 

और अपनी सामग्री स्क्रिप्ट:

console.js

function customConsole() { 
    window.myNewFunction = function() { 
     console.log("Hello I'm available from console."); 
    }; 
} 

var script = document.createElement('script'), 
    code = document.createTextNode('(' + customConsole + ')();'); 
script.appendChild(code); 
(document.body || document.head || document.documentElement).appendChild(script); 

तो आपके द्वारा निर्दिष्ट वैश्विक कार्यों के रूप में आपके नए कार्यों तो टी टोपी आप उन्हें console में उपयोग कर सकते हैं।
यह भी देखें post

+2

आप और क्रोम रॉक! यह सचमुच आसान है_। मैं गूंज सकता हूं ("हैलो वर्ल्ड!"); पाँच मिनट में :)। – clime

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