2012-05-16 12 views
11

विकास उद्देश्यों के लिए, मैं कंसोल पर प्रतिलिपि बनाने के बजाय ब्राउज़र में स्थानीय रूप से संग्रहीत स्क्रिप्ट को आसानी से लोड करने में सक्षम होना चाहता हूं।गतिशील रूप से स्थानीय जेएस फ़ाइल लोड करने का कोई तरीका है?

नया <script> तत्व बनाना काम नहीं कर रहा है, यह Not allowed to load local resource: file://.... त्रुटि (क्रोम में) देता है।

इसके अलावा, एक उपयोगकर्तास्क्रिप्ट बनाना काम नहीं करेगा - मुझे इसे संपादित करने पर हर बार इसे फिर से स्थापित करना होगा।

क्या बुकमार्क पुस्तिका/आदि के माध्यम से स्थानीय स्क्रिप्ट को आसानी से लोड करने का कोई वैकल्पिक तरीका है?

+1

यदि हमें जावास्क्रिप्ट और ब्राउज़र के बाहर शाखा करने की अनुमति है, तो यहां स्थानीय सर्वर पर शायद आपकी स्क्रिप्ट की सेवा हो सकती है (शायद आप स्थानीय विकास कर रहे हैं)? आप पाइथन की एक पंक्ति के साथ एक स्थानीय सर्वर शुरू कर सकते हैं। – cheeken

+0

@cheeken: हाँ, यह वास्तव में एक अच्छा विचार है .. I _do_ अपाचे स्थापित है, और मैं अपाचे फ़ोल्डर में अपना विकास करता हूं, इसलिए यह एक अच्छा विकल्प है! – Manishearth

उत्तर

24

Chrome में, आप एक विस्तार है कि सभी रखती है बना सकते हैं यदि आप अपने js फ़ाइल liek इतना करने के लिए अपने पृष्ठ से एक रिश्तेदार पथ की कोशिश की है ... स्थानीय फ़ाइलों की जिन्हें आपको लोड करने की आवश्यकता है।

{ 
    "name": "File holder", 
    "manifest_version": 2, 
    "version": "1.0", 
    "web_accessible_resources": ["test.js", "other.js", "yetanother.js"] 
} 

फिर, सभी स्क्रिप्ट आपको लगता है कि नई निर्देशिका में लोड करना चाहते डाल: यह के माध्यम से chrome-extension://...file://... के बजाय

एक नए फ़ोल्डर में manifest.json नाम की एक फ़ाइल बनाने और साथ इसे भरने के लिए अपनी फ़ाइलें पहुंचा जा सकता है , और सुनिश्चित करें कि वे web_accessbile_reources मेनिफेस्ट सूची में शामिल हैं। chrome://extensions पर जाकर एक्सटेंशन लोड करें, Developer Mode सक्षम करना और Load unpacked extension... के साथ नया फ़ोल्डर चुनना।

अब आप chrome-extension://[app_id]/[file_name] का उपयोग कर अपनी एक्सटेंशन निर्देशिका में सभी फ़ाइलों तक पहुंच सकते हैं, जहां chrome://extensions पृष्ठ पर एक्सटेंशन के लिए सूचीबद्ध हैश app_id "है। ध्यान दें कि प्रोटोकॉल और होस्टनाम अलग-अलग हैं जहां से आप अपना वास्तविक कार्य कर रहे हैं (जब तक कि आप एक्सटेंशन फ़ोल्डर में अपने सभी विकास करने का निर्णय नहीं लेते हैं, जो आपको स्वीकार्य हो सकता है), एक्सटेंशन संसाधन क्रॉस-डोमेन हैं और केवल हो सकते हैं <script> टैग के माध्यम से लोड किया गया।

कंसोल से

अब, आप कर सकते हैं:

var s = document.createElement("script"); 
s.src = "chrome-extension://aefigdoelbemgaedgkcjpcnilbgagpcn/test.js"; 
document.body.appendChild(s); 

(आपकी फ़ाइल मान लिया जाये कि test.js है और आपके एप्लिकेशन id aefigdoelbemgaedgkcjpcnilbgagpcn है।)

यह टाइप करने के लिए एक काफी सा, मुझे पता है, लेकिन शायद आप chrome-extension://[app_id] भाग को शॉर्टेंड चर के रूप में स्टोर कर सकते हैं?

+0

मैंने क्रोम 22 के साथ ऐसा करने का प्रयास किया, और यह एक चेतावनी प्रदर्शित करता है कि संस्करण 1 का समर्थन चरणबद्ध हो रहा है। V2 में परिवर्तनों पर दस्तावेज़ में "एक पैकेज के संसाधन अब डिफ़ॉल्ट रूप से बाहरी वेबसाइटों (किसी छवि के स्रोत या स्क्रिप्ट टैग के रूप में) के लिए उपलब्ध नहीं हैं।यदि आप चाहते हैं कि कोई वेबसाइट आपके पैकेज में निहित संसाधन लोड करने में सक्षम हो, तो आपको इसे web_accessible_resources मेनिफेस्ट विशेषता के माध्यम से स्पष्ट रूप से श्वेतसूची में रखना होगा। यह उन एक्सटेंशन के लिए विशेष रूप से प्रासंगिक है जो इंजेक्शन सामग्री स्क्रिप्ट के माध्यम से किसी वेबसाइट पर एक इंटरफ़ेस बनाते हैं। "मुझे संदेह है कि हमें इसकी आवश्यकता होगी। – Barmar

+0

एक बार जब मैं स्क्रिप्ट फ़ाइल लोड करता हूं, तो मैं इसका उपयोग कैसे करूं? My .js फ़ाइल में एक शीर्ष शीर्ष है -लेवल फ़ंक्शन परिभाषा, लेकिन जब मैं इसे जावास्क्रिप्ट कंसोल में कॉल करने का प्रयास करता हूं तो यह कहता है कि इसे परिभाषित नहीं किया गया है। – Barmar

+0

@ बाड़ार: यह उत्तर प्रकट हुआ था कि मैनिफेस्ट संस्करण 2 व्यापक रूप से उपयोग में था। नोटिस के लिए धन्यवाद; मैं इसे अभी ठीक कर दूंगा – apsillers

-1



src = '/ js/javascript.js'

+0

काम नहीं करेगा, मैं एक उपयोगकर्तास्क्रिप्ट विकसित कर रहा हूं - अन्यथा, मैं कंसोल पर पहली जगह क्यों कॉपी करूंगा? – Manishearth

1

दुख की बात है, Chrome doesn't allow you to load local files via AJAX; हालांकि, आप फ्लैग --disable-web-security के साथ ब्राउज़र लॉन्च करके इस सीमा के आसपास काम कर सकते हैं (विवरण प्रति मेजबान ऑपरेटिंग सिस्टम में भिन्न होते हैं)।

+5

क्या मैं इसके बजाय '--allow-file-access-from-files 'का सुझाव दे सकता हूं? इससे अन्य सभी वेब सुरक्षा सुविधा प्रभावी रहेंगी और (मुझे विश्वास है) अभी भी वांछित परिणाम प्राप्त कर सकते हैं। – apsillers

+0

दिलचस्प खोज लेकिन [यह SO उत्तर] (http://stackoverflow.com/a/4271569/244128) अपने [बकाया मुद्दों] (http://code.google.com) के आधार पर उस सुविधा की प्रभावशीलता के बारे में कुछ चिंताओं को उठाता है/पी/क्रोमियम/मुद्दों/विस्तार? id = 4197 और कर सकते हैं = 1 & q = अनुमति देने के-फ़ाइल-पहुँच-फाइलों से और colspec = आईडी% 20Stars% 20Pri% 20Area% 20Feature% 20Type% 20Status% 20Summary% 20Modified% 20Owner% 20Mstone% 20OS)। – maerics

+0

मुझे जो नहीं मिलता वह यह है कि किसी भी तरह $ .getScript काम करता है। – njzk2

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

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