क्या जावास्क्रिप्ट कंसोल में iframe के संदर्भ को बदलने का कोई तरीका है?


107

मैं अपने कोड को निष्पादित करने के लिए webkit डेवलपर टूल / फायरबग कंसोल में निष्पादित जावास्क्रिप्ट के संदर्भ को बदलना चाहूंगा जैसे यह पृष्ठ पर एक iframe के अंदर से चल रहा है।

मुझे पता है कि मैं iframe में पेज को एक अलग पेज पर खोलकर ऐसा कर सकता हूं, लेकिन मैं कोड चलाना चाहता हूं जहां यह मूल फ्रेम के साथ इंटरैक्ट करता है।


1
आप हमेशा window.frames[x]फैशन में कोड निष्पादित कर सकते हैं । आपको जो भी कमांड चाहिए उसे बस अपेंड करें। आईईwindow.frames[0].runFunction()
लवएंडकोडिंग

1
@ कटश, क्या आप शायद इसका जवाब देना चाहेंगे?
Muhd

मैं IE में समान कैसे कर सकता हूं? अगर यह तत्व आंतरिक IFRAME में स्थित है, तो मुझे $ का उपयोग करके कंसोल विंडो में एक तत्व का चयन करना बेहद मुश्किल लगता है। कृपया मदद कीजिए।
तारेकहफ

जवाबों:


149

Chrome 15 आपको कंसोल के दायरे को बदलने की अनुमति देता है। कंसोल के निचले भाग में, स्पष्ट कंसोल बटन के बगल में, एक मेनू है जो कहता है कि <top frame>उपलब्ध फ़्रेमों की एक सूची देगा:

यहां छवि विवरण दर्ज करें

फ़ायरफ़ॉक्स में वर्तमान में एक समान विशेषता है :

यहां छवि विवरण दर्ज करें


आप कमांड लाइन का उपयोग करके फ़्रेम पर भी नेविगेट कर सकते हैं :

var frame = document.getElementById("frame1").contentWindow;
cd(frame);

6
क्या मैं इस समान कार्य को पूरा करने के लिए कंसोल में कोड निष्पादित कर सकता हूं, या क्या मुझे फ्रेम चयनकर्ता पर क्लिक करना होगा?
बॉडीलाइन

@ बॉडीलाइन - क्या आपने इसे कंसोल कमांड से पूरा करने का एक तरीका खोज लिया है?
आर्टि

1
ध्यान दें कि यह ड्रॉपडाउन अब नीचे के बजाय कंसोल के शीर्ष पर है।
Muhd

1
मैं इसे क्रोम 38 में नहीं देखता हूं। जल्दी से यह पता नहीं लगा सका कि क्रोम में यह कैसे करना है; इसके बजाय फ़ायरफ़ॉक्स में सीडी (फ्रेम [<इंडेक्स नंबर>]) का इस्तेमाल किया।
आक्रिकोस

1
कितनी शर्म की बात है। यदि फ़्रेम की सामग्री बदली गई है तो यह चयनित फ़्रेम को बनाए नहीं रखेगा। यह "टॉप फ्रेम" पर वापस आ जाता है
bryc

22

आप कार्यक्षमता <iframe>का उपयोग करके कोड को निष्पादित कर सकते हैं window.frames[x]। उदाहरण के लिए,

window.frames[0].runFunction()

एक अच्छा विकल्प अगर फायरबग आपकी पसंद का हथियार है। धन्यवाद।
अतुल्य सपने

1
आप jQuery कमांड जैसे कार्यों के बाहर कोड को कैसे निष्पादित करेंगे? या यदि आप किसी फ्रेम के तहत DOM तत्व का संदर्भ प्राप्त करना चाहते हैं तो उस तत्व के विरुद्ध कोड निष्पादित करें?
डेविड

तो एक उदाहरण के रूप में होगा:window.frames[0].alert()
Shayan

6

आज के क्रोम (संस्करण 52) में, आपको केवल देव टूल्स के "एलिमेंट्स" टैब में आइफ्रेम का चयन करना है। जेएस कंसोल में आप जो कुछ भी चलाते हैं, वह स्वचालित रूप से चयनित आइफ्रेम के संदर्भ में चलेगा।

उदाहरण के लिए, यहाँ मैंने एक iframe चुना है, और जब मैं document.location.pathnameकंसोल में टाइप करता हूँ तो यह एड्रेस बार के URL के बजाय iframe की src विशेषता देता है:

यहां छवि विवरण दर्ज करें


4

फायरबग सॉल्यूशन के लिए यह उत्तर एक और SO प्रश्न पर देखें । हालांकि, डेनिस के क्रोम समाधान की तरह क्रॉस-डोमेन काम नहीं करता है।

संपादित करें: फायरबग के नए संस्करणों के साथ उनके पास क्रॉस-डोमेन समस्या तय हो सकती है।


4

डिफ़ॉल्ट रूप से स्क्रिप्ट स्टेटमेंट और कमांड का निष्पादन शीर्ष-स्तरीय विंडो के संदर्भ में किया जाता है। यदि आप फ़्रेम का उपयोग कर रहे हैं, तो "cd ()" कंसोल कमांड का उपयोग करें।

सीडी () कॉलिंग सीडी () मापदंडों के बिना शीर्ष स्तर की खिड़की पर लौटती है।

सीडी (विंडो) आपको वेब-पृष्ठ की डिफ़ॉल्ट शीर्ष-स्तरीय विंडो से फ़्रेम की विंडो तक कमांड-लाइन अभिव्यक्ति मूल्यांकन को बदलने की अनुमति देता है।

अधिक जानकारी, यहाँ


यह वास्तव में वही है जिसकी मुझे तलाश थी। (यह फ़ायरफ़ॉक्स में काम करता है) धन्यवाद।
user2410595

4
cd(document.getElementsByTagName('iframe')[0]);

2
ढेर अतिप्रवाह में आपका स्वागत है! कृपया अपने कोड को संपादित करने पर विचार करें कि आपका कोड क्या करता है और यह समस्या का समाधान क्यों करेगा, इसके बारे में अधिक विवरण जोड़ने के लिए। एक जवाब जो ज्यादातर सिर्फ कोड होता है (भले ही यह काम कर रहा हो) आमतौर पर ओपी को उनकी समस्या को समझने में मदद नहीं करेगा।
SuperBiasedMan

धन्यवाद! यह फ़ायरफ़ॉक्स के लिए यह करने के लिए एक अजीब तरीका है, लेकिन मुझे लगता है कि आप संदर्भ को स्विच करने के लिए कंसोल में दर्ज करते हैं "cd (iframe)"। मैंने आपको +1 b / c दिया, आपने मुझे टन-हेडिंग से बचाया, लेकिन आपको वास्तव में इस पोस्ट को चमकाना चाहिए और इसे समझाना चाहिए!
स्कॉट स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.