2011-03-17 13 views
13

सामग्री स्क्रिप्ट से अनुरोध का जवाब देते समय मुझे यह त्रुटि पृष्ठभूमि पृष्ठ में मिल रही है। क्या किसी को पता है कि इस त्रुटि का कारण क्या हो सकता है?असहज त्रुटि का कारण: डिस्कनेक्ट किए गए पोर्ट ऑब्जेक्ट का उपयोग करने का प्रयास

पूर्ण स्टैक ट्रेस: ​​

Uncaught Error: Attempting to use a disconnected port object chrome/RendererExtensionBindings:147 
chrome.Port.postMessage  chrome/RendererExtensionBindings:147 
chromeHidden.Port.dispatchOnConnect.connectEvent   chrome/RendererExtensionBindings:89 
myExtension.foo.sendResponse.state  background.js:1573 
db.readTransaction.tx.executeSql.paramStr  background.js:1038 

यह केवल ब्राउज़ कर पुन: लोड एक्सटेंशन की मदद नहीं कर रहा है के कुछ घंटों बाद क्या होता है - नहीं है कि यह सभी क्रोम ब्राउज़र पुन: प्रारंभ करने के लिए एक समाधान हो सकता है की जोड़ी के लिए वापस सामान्य करने के हो जाता है घंटे सामग्री स्क्रिप्ट पृष्ठभूमि में अनुरोध भेजना जारी रख सकती है लेकिन पृष्ठभूमि से कोई प्रतिक्रिया नहीं भेजी जा सकती है क्या कोई तरीका है कि मैं इस असीमित त्रुटि को पकड़ सकता हूं और श्रोता को रीसेट कर सकता हूं?

मैं अपने संचार के लिए chrome.extension.onRequest.addListener का उपयोग कर रहा हूं। जवाब देने से पहले मैं डीबी से पूछता हूं और क्वेरी समाप्त होने से पहले मैं कोई अन्य प्रतिक्रिया नहीं भेजता हूं।

धन्यवाद, मारेक

+1

कृपया पृष्ठभूमि कोड और सामग्री स्क्रिप्ट के अंदर अपना कोड प्रदान करें। – serg

उत्तर

14

जब एक कनेक्शन बंद कर दिया हो इस कारण होता है। उदाहरण के लिए यदि आप एक टैब खोलते हैं जिसमें content_script इंजेक्शन है, तो यह एक कनेक्शन खुलता है, टैब बंद हो जाता है, और फिर background_page एक संदेश पास करने का प्रयास करता है। यह असफल हो जाएगा क्योंकि टैब संदेश प्राप्त करने के लिए अब सक्रिय नहीं है।

आपके मामले में मुझे लगता है कि टैब बंद होने और नए टैब खोलने के बाद आप नए टैब के साथ नया कनेक्शन बनाने के बजाय पुराने टैब के साथ संदेश पोस्ट करने का प्रयास कर रहे हैं। मैं फिर से long-lived connections section के माध्यम से पढ़ने की सिफारिश करेंगे।

1

मेरे मामले में, हालांकि, मुझे chrom.runtime.sendMessage (msg, प्रतिक्रिया कॉलबैकमेसिंगहेयर) को sendResponse फ़ंक्शन प्रदान करने की आवश्यकता है, जो आपको "डिस्कनेक्ट किए गए पोर्ट ऑब्जेक्ट का उपयोग करने का प्रयास" त्रुटि देगा।

+0

sendMessage() या postMessage()? –

+0

chrome.runtime.sendMessage() https://developer.chrome.com/extensions/runtime#method-sendMessage – Doug

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