google chrome extension :: background.log () बैकग्राउंड पेज से?


173

अगर मैं console.log('something');पॉपअप पेज से कॉल करता हूं , या कोई स्क्रिप्ट शामिल है तो यह ठीक काम करता है।

हालाँकि बैकग्राउंड पेज पॉपअप पेज से सीधे नहीं चलता है क्योंकि यह कंसोल में शामिल नहीं है।

वहाँ एक तरीका है कि मैं console.log()पॉपअप पृष्ठ के लिए कंसोल में दिखाने के लिए पृष्ठभूमि पृष्ठ में मिल सकता है ?

वहाँ किसी भी तरह से है, पृष्ठभूमि पृष्ठ से पॉपअप पृष्ठ में एक समारोह कहते हैं?


"ठीक काम करता है" कहने से आपका क्या मतलब है? "कुछ" कहां पढ़ रहे हैं? पॉपअप विंडो में कंसोल.लॉग () का उपयोग करके लोड किए गए पेज के कंसोल में प्रिंट नहीं करना चाहिए - चूंकि प्रश्न 2 साल पुराना है इसलिए एपीआई बदल गया है?
औरदम

14
यदि आप राइट क्लिक करते हैं -> अपने ब्राउज़र की कार्रवाई पर पॉपअप का निरीक्षण करते हैं, तो आपको अपने एक्सटेंशन के लिए एक डेवलपर टूल पेज मिलेगा। popup.js उस पर लॉग प्रिंट करेगा।
21 अप्रैल को न_शिशी

@ not_shitashi की टिप्पणी इस प्रश्न का उत्तर होनी चाहिए।
gabe

जवाबों:


154

किसी भी एक्सटेंशन पेज ( सामग्री स्क्रिप्ट को छोड़कर ) के माध्यम से पृष्ठभूमि पृष्ठ तक सीधी पहुंच है chrome.extension.getBackgroundPage()

इसका मतलब है, पॉपअप पेज के भीतर , आप बस कर सकते हैं:

chrome.extension.getBackgroundPage().console.log('foo');

इसका उपयोग करना आसान बनाने के लिए:

var bkg = chrome.extension.getBackgroundPage();
bkg.console.log('foo');

अब यदि आप सामग्री स्क्रिप्ट के भीतर भी ऐसा ही करना चाहते हैं तो आपको इसे प्राप्त करने के लिए संदेश पासिंग का उपयोग करना होगा। कारण, वे दोनों अलग-अलग डोमेन से संबंधित हैं, जो समझ में आता है। आपके पास चेक आउट करने के लिए संदेश पासिंग पृष्ठ में कई उदाहरण हैं ।

उम्मीद है कि सब कुछ साफ हो जाए।


1
@MohamedMansour, यह समाधान मेरे लिए काम नहीं करता है। अगर मैं alert() chrome.extension.getBackgroundPage(), मैं null। क्या मुझे अनुमतियाँ सेट करने या कुछ अन्य कॉन्फ़िगरेशन करने की आवश्यकता है?
gwg

@gwg आपके एक्सटेंशन का बैकग्राउंड पेज है? दस्तावेज़ीकरण के अनुसार "यदि कोई पृष्ठभूमि पृष्ठ नहीं है तो रिटर्न शून्य है।" डेवलपर
मोहम्मद मंसूर

यह मेरे स्वयं के संदेशों को सांत्वना देने के लिए पूरी तरह से काम करता है। धन्यवाद। Popup.js से अपवाद आदि बनाने के बारे में कोई विचार पृष्ठभूमि में दिखाई देता है। Js का कंसोल?
स्टीवन_नोबल

195

यदि आप एक्सटेंशन सूची में "background.html" लिंक पर क्लिक करते हैं तो आप पृष्ठ का कंसोल खोल सकते हैं।

अपने एक्सटेंशन से संबंधित पृष्ठभूमि पृष्ठ तक पहुंचने के लिए Settings / Extensionsएक नया टैब खोलें या खोलें और दर्ज करें chrome://extensions। आपको कुछ इस तरह का स्क्रीनशॉट दिखाई देगा।

क्रोम एक्सटेंशन संवाद

अपने एक्सटेंशन के तहत लिंक पर क्लिक करें background page। यह एक नई विंडो खोलता है। के लिए संदर्भ मेनू नमूना विंडो शीर्षक है: _generated_background_page.html


4
चीयर्स, मैं इससे अवगत हूं, हालांकि पृष्ठभूमि पृष्ठ को सीधे खोलने से पॉपअप पृष्ठ से कुछ भी आह्वान नहीं होता है।
हैलवुड

पृष्ठभूमि पृष्ठ खोलना किसी भी सांत्वना लॉगिंग जानकारी को आउटपुट नहीं करता है।
लेके

@ हॅलवुड बैकग्राउंड पेज खोलने से कुछ नहीं होता है लेकिन बैकग्राउंड पेज के लिए कंसोल दिखाएगा।
anddam

1
आप अभी भी इसे में लिखने के लिए है एक बार आप पृष्ठभूमि पृष्ठ खोला @Layke, यानी सीधे पृष्ठभूमि पृष्ठ से console.log () का उपयोग करें या, के रूप में मोहम्मद-मंसूर ने कहा, वस्तु getBackgroundPage () द्वारा दिया पर एक ही विधि बुला
anddam

3
मैंने यह प्रश्न खोज लिया कि एक्सटेंशन आउटपुट (जैसे ओपी) की जांच कैसे करें और यह उत्तर बहुत उपयोगी पाया गया क्योंकि इसने मुझे कंटेंट पेज से गुजरे बिना कंसोल लॉगिंग की जांच करने की अनुमति दी।
औरडैम

66

सीधे अपने प्रश्न का उत्तर देने के लिए, जब आप console.log("something")पृष्ठभूमि से कॉल करते हैं , तो यह संदेश लॉग होता है, पृष्ठभूमि पृष्ठ के कंसोल पर। इसे देखने के लिए, आप अपने विस्तार के तहत chrome://extensions/उस पर जा सकते हैं और उस पर क्लिक कर सकते हैं inspect view

जब आप पॉपअप पर क्लिक करते हैं, तो यह वर्तमान पृष्ठ में लोड होता है, इस प्रकार कंसोल.लॉग को वर्तमान पृष्ठ में लॉग संदेश दिखाना चाहिए।


मैं भी! यह सबसे सरल और प्रत्यक्ष है।
सईदबाक़र

मेरे एक्सटेंशन में ऐसा नहीं है, हालांकि अन्य एक्सटेंशन हैं! मैं इसे कैसे सक्षम करूं
अहमद ईद २

यदि आपके पास मेरे जैसे 3 मॉनिटर हैं ... अपना सिर कुंडा। यह मेरे मॉनिटर सरणी के विपरीत छोर पर ChromeDevTools खोल रहा था और मैंने इसे नहीं देखा।
एमपीएन

26

आप अभी भी कंसोल.लॉग () का उपयोग कर सकते हैं, लेकिन यह एक अलग कंसोल में लॉग इन हो जाता है। इसे देखने के लिए - एक्सटेंशन आइकन पर राइट क्लिक करें और "पॉपअप का निरीक्षण करें" चुनें।


12

सबसे सरल समाधान फ़ाइल के शीर्ष पर निम्न कोड जोड़ना होगा। और आप सामान्य रूप से सभी पूर्ण क्रोम कंसोल एपीआई का उपयोग कर सकते हैं ।

 console = chrome.extension.getBackgroundPage().console;
// for instance, console.assert(1!=1) will return assertion error
// console.log("msg") ==> prints msg
// etc

9
const log = chrome.extension.getBackgroundPage().console.log;
log('something')

लॉग खोलें:

  • खुला: क्रोम: // एक्सटेंशन /
  • विवरण> पृष्ठभूमि पृष्ठ

क्या आप अपने आदेशों के बारे में कुछ और स्पष्टीकरण प्रदान करना चाहेंगे?
inetphantom

7

यदि आप सक्रिय पृष्ठ के कंसोल में लॉग इन करना चाहते हैं, तो यह कोशिश करें:

chrome.tabs.executeScript({
    code: 'console.log("addd")'
});

1
वर्तमान टैब के लिए होस्ट की अनुमति आवश्यक है।
Xan

आप इसे परीक्षण के लिए जोड़ सकते हैं, और यदि आप एडऑन जारी करते हैं तो हटा सकते हैं।
फज

1

मूल प्रश्न के संबंध में मैं मोहम्मद मंसूर द्वारा स्वीकार किए गए उत्तर को जोड़ना चाहूंगा कि इस कार्य को अन्य तरीके से बनाने का एक तरीका भी है:

आप कॉल के साथ पृष्ठभूमि पृष्ठ / स्क्रिप्ट के भीतर से अन्य एक्सटेंशन पेज (यानी विकल्प पृष्ठ, पॉपअप पेज) तक पहुंच सकते हैं chrome.extension.getViews()। जैसा यहाँ बताया गया है

 // overwrite the console object with the right one.
var optionsPage = (  chrome.extension.getViews()  
                 &&  (chrome.extension.getViews().length > 1)  ) 
                ? chrome.extension.getViews()[1] : null;

 // safety precaution.
if (optionsPage) {
  var console = optionsPage.console;
}

1

यह एक पुरानी पोस्ट है, जिसमें पहले से ही अच्छे उत्तर हैं, लेकिन मैं अपने दो बिट्स जोड़ता हूं। मुझे कंसोल.लॉग का उपयोग करना पसंद नहीं है, मैं एक लकड़हारे का उपयोग करता हूं जो कंसोल पर लॉग करता है, या जहां भी मैं चाहता हूं, इसलिए मेरे पास लॉग फ़ंक्शन को इस तरह से थोड़ा परिभाषित करने वाला एक मॉड्यूल है

function log(...args) {
  console.log(...args);
  chrome.extension.getBackgroundPage().console.log(...args);
}

जब मैं लॉग को कॉल करता हूं ("यह मेरा लॉग है") यह पॉपअप कंसोल और बैकग्राउंड कंसोल दोनों में संदेश लिखेगा।

फायदा कोड को बदलने के बिना लॉग के व्यवहार को बदलने में सक्षम होना है (जैसे उत्पादन के लिए लॉग को अक्षम करना, आदि)


0

एक बैकग्राउंड पेज से कंसोल लॉग पाने के लिए आपको अपने पेज के बैकग्राउंड में निम्न कोड स्निपेट लिखना होगा।

chrome.extension.getBackgroundPage () console.log ( 'हैलो')।

फिर विस्तार को लोड करें और कंसोल लॉग देखने के लिए इसके पृष्ठभूमि पृष्ठ का निरीक्षण करें।

आगे बढ़ें!!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.