2011-08-28 12 views
5

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

मैंने किसी भी त्रुटि को डीबग करने के लिए डेवलपर टूल्स और अंतर्निहित जावास्क्रिप्ट कंसोल का उपयोग करने का प्रयास किया है, लेकिन किसी भी जानकारी को सूचीबद्ध करने के लिए कुछ भी नहीं दिखता है।

Console.app किसी भी त्रुटि संदेश को छोड़कर, जो कुछ भी मुझे पहले से पता है, को सार्थक सूचीबद्ध नहीं करता है।

[0x0-0x2d02d].com.google.Chrome: [346:1547:16686819618022:ERROR:extension_error_reporter.cc(55)] Extension error: Invalid script header.

मैं इस त्रुटि संदेश को उचित रूप से डीबग कैसे कर सकता हूं और पता लगा सकता हूं कि हेडर के बारे में क्या गलत है?

मैं ओएस 10.7 शेर के तहत देव चैनल पर क्रोम 15.0.861.0 का उपयोग कर रहा हूं।

+1

मुझे नहीं लगता कि * * वहाँ इस के लिए किसी भी उपकरण हैं। यदि आप यहां वास्तविक कोड पोस्ट करते हैं, तो कोई भी त्रुटि को ढूंढने में सक्षम हो सकता है। अन्यथा, आप इसे पुराने तरीके से करेंगे: एक अच्छी स्क्रिप्ट और खराब स्क्रिप्ट लें और जब तक समस्या निर्धारित नहीं हो जाती है तब तक तुलना करें और आधा-विभाजित मतभेद लें। –

+0

http://gist.github.com/ पर कोड पोस्ट करें – erikvold

उत्तर

5

अंततः Chromium Bug Report के माध्यम से, इस सवाल के जवाब में मैंने ठोकर खाई।

जैसा कि यह पता चला है, मेरे प्रश्न का उत्तर (काफी संक्षिप्त) Userscript Documentation for Chrome पृष्ठ में था।

With Greasemonkey-style @include rules, it is not possible for Chrome to know for certain the domains a script will run on (because google.* can also run on google.evil.com). Because of this, Chrome just tells users that these scripts will run on all domains, which is sometimes scarier than necessary. With @match, Chrome will tell users the correct set of domains a user script will run on.

यह पता चला है के रूप में, मैं www.musicbrainz.org के साथ-साथ musicbrainz.org, से मेल करने की कोशिश में है, लेकिन उद्धृत पाठ प्रति @match http://*musicbrainz.org उपयोग कर रहा था, कि गलती से evilmusicbrainz.org मिलान से आप को बचा नहीं है। तो, मेरा समाधान दो लाइनों का उपयोग करना था:

@match http://*.musicbrainz.org और;
@match http://musicbrainz.org

+0

यह अतिरिक्त पृष्ठों पर चल रही स्क्रिप्ट को समझाएगा, यह त्रुटि संदेश की व्याख्या नहीं करता है। –

+0

क्रोम सुरक्षा उद्देश्यों के लिए "समान-मूल" अनुरोधों का बहुत मजबूत उपयोग और पुन: उपयोग कर रहा है। मैं बहुत अच्छी तरह से 'http: // */*' का उपयोग कर सकता हूं (और हाँ, मुझे '// */* 'निर्दिष्ट करना होगा), लेकिन यदि मैं दूसरा स्तर डोमेन निर्दिष्ट करता हूं, तो यह साफ़ होना चाहिए। आप दूसरे स्तर के डोमेन में ग्लोब नहीं कर सकते हैं। इसका मतलब है कि टीएलडी को भी साफ करना है। असल में, आप एक सब-डोमेन ब्लॉग कर सकते हैं, लेकिन यदि आप ऐसा करते हैं तो इसे दूसरे स्तर और टीएलडी निर्दिष्ट करने से पहले एक बिंदु के साथ सीमित किया जाना चाहिए। – VxJasonxV

3

प्रकार:

कोड में
debugger; 

कहीं, और वेब इंस्पेक्टर उस स्थान में पॉप अप होगा। मैं इसी तरह सवाल का जवाब यहां है Chrome debugger inject javascript

1

मैं पता लगा है, जबकि मैं एक ही त्रुटि संदेश (अमान्य स्क्रिप्ट हैडर) मिल गया है कि यह // == UserScript == हैडर जानकारी के बीच एक टाइपो के कारण accoured।

Wronge लाइन

// @run-at document.end

को सही लाइन

// @run-at document-end
संबंधित मुद्दे