हमारे पास एक ब्राउज़र विस्तारक ब्राउज़र (बीएचओ) के रूप में लागू एक आईई एक्सटेंशन है। हमारे पास सी ++ में लिखा गया एक उपयोगिता फ़ंक्शन है जिसे हम पृष्ठ की विंडो ऑब्जेक्ट में जोड़ते हैं ताकि पृष्ठ में अन्य स्क्रिप्ट स्थानीय स्क्रिप्ट फ़ाइलों को गतिशील रूप से लोड करने के लिए इसका उपयोग कर सकें।मैं जावास्क्रिप्ट के साथ वर्तमान में चल रही स्क्रिप्ट का मार्ग कैसे प्राप्त करूं?
myfunc()
सी में लिखे ++ और पेज का JavaScript- फ़ाइल के संपर्क में: इन स्थानीय स्क्रिप्ट फ़ाइलें करने के लिए संबंधित पथ को हल करने में, हालांकि, हम अपने फ़ंक्शन को कॉल जावास्क्रिप्ट फ़ाइल का रास्ता निर्धारित करने के लिए की जरूरत है: ///path/to/some/javascript.js
- (अतिरिक्त ढेर फ्रेम)
शीर्ष फ्रेम मैं जानकारी है कि स्क्रिप्ट myfunc()
बुला फ़ाइल में स्थित है प्राप्त करना चाहते हैं से: /// पथ /to/some/javascript.js।
मुझे पहले उम्मीद थी कि हम आसानी से IActiveScriptDebug
इंटरफ़ेस का उपयोग हमारे उपयोगिता फ़ंक्शन से स्टैकट्रैक प्राप्त करने के लिए कर सकते हैं। हालांकि, इंटरफ़ेस या संबंधित दस्तावेज़ से IActiveScript
इंटरफ़ेस प्राप्त करना असंभव प्रतीत होता है (Full callstack for multiple frames JS on IE8 देखें)।
एकमात्र चीज जिसे मैं सोच सकता हूं वह है कि हम अपनी स्क्रिप्ट डीबगर कार्यान्वयन पंजीकृत करें औरडीबगर में तोड़ दें। हालांकि, मुझे संदेह है कि यह उपयोगकर्ता को यह बताए बिना काम करेगा कि वे डीबगर में तोड़ना चाहते हैं या नहीं।
इस दृष्टिकोण के अधिक गहन परीक्षण करने से पहले, मैं यह जांचना चाहता था कि क्या इस बारे में निश्चित जानकारी है कि यह काम करने की संभावना है या/या वैकल्पिक दृष्टिकोण का सुझाव दे सकता है जो एक स्टैक ट्रेस प्राप्त करने के लिए सी ++ में लिखे गए फ़ंक्शन को सक्षम करेगा स्क्रिप्टिंग इंजन से जिसने इसे बुलाया।
मुझे और स्पष्ट होना चाहिए था: myfunc() को कॉलर से कोई जानकारी नहीं मिल सकती है जिसका उपयोग पथ निर्धारित करने के लिए किया जा सकता है। (यदि कोई उत्सुक है, तो हम कॉमनजेएस स्पेक के अनुसार आवश्यकता() फ़ंक्शन को कार्यान्वित कर रहे हैं, इसलिए हमें स्पेक कहने के लिए चिपकना होगा।) –
यह बिल्कुल अलग है। सबसे अच्छा आप कर सकते हैं कि वर्तमान कार्यान्वयन पर नज़र डालें और संभवतः एक विचार प्राप्त करें (यदि आपने पहले से नहीं किया है)।एक उदाहरण "स्मार्ट प्लेटफ़ॉर्म" को https://github.com/joyent/smart-platform/blob/master/share/internal_js/require.js –
पर कार्यान्वयन की आवश्यकता होगी, यह कैसे मदद करता है? हमारे पास पहले से ही आईई (सी ++ में लिखा गया है) के लिए आवश्यकता() की कार्यान्वयन है, लेकिन इसके लिए spec के अनुसार काम करने के लिए, इसे जेएस फ़ाइल के पथ को जानने की आवश्यकता है जो इसे आमंत्रित करता है। –