मुझे निम्नलिखित उपयोग के लिए एक क्रॉस-ब्राउज़र समाधान की आवश्यकता है: उपयोगकर्ता हमारे पृष्ठों में से एक पर "निर्यात" बटन क्लिक करता है, जो किसी फ़ॉर्म के साथ पॉपअप खोलता है। फॉर्म सबमिट करने पर, उपयोगकर्ता को बाइनरी फ़ाइल डाउनलोड (उदाहरण के लिए एक सीएसवी फ़ाइल) प्राप्त करनी चाहिए, और पॉपअप को मूल विंडो की दृश्य सामग्री को बदले बिना बंद करना चाहिए।कैसे प्रदान किया जाता है (आईई और फ़ायरफ़ॉक्स में) एक पॉपअप में एक बाइनरी फ़ाइल डाउनलोड बंद करता है?
हम पॉपअप को बंद करने के लिए टाइमआउट का उपयोग नहीं कर सकते हैं, क्योंकि आमतौर पर उपयोगकर्ता को यह डाउनलोड करने से पहले फ़ाइल को संभालने का तरीका कहता है, और यह जानने का कोई तरीका नहीं है कि उपयोगकर्ता इस संवाद को संभालने में कितना समय लगेगा ।
मूल रूप से पॉपअप में एक स्क्रिप्ट थी जो डाउनलोड फ़ाइल यूआरएल में window.location सेट करता है। वह पॉपअप को बंद कर देता है।
तो मैंने पैरेंट विंडो में एक छिपी आईफ्रेम डालने की कोशिश की और पॉपअप को self.close() को कॉल करने से पहले डाउनलोड यूआरएल में iFrame का src सेट किया। यह फ़ायरफ़ॉक्स में पूरी तरह से काम करता है, लेकिन आईई पूरी तरह से सुरक्षा प्रतिबंधों के साथ उलझन में है।
क्या ऐसा करने का कोई सही तरीका है? आईई पर काम करने के तरीके के बारे में कैसे?
अपडेट - समस्या
हल जवाब यहां प्रस्तावित बहुत दूर बंद नहीं थे, लेकिन मेरी समस्या एक सा सिर्फ एक जावास्क्रिप्ट मुद्दा जा रहा है की तुलना में अधिक जटिल था। मुझे आईई और एक्सेल के साथ बग का सामना करना पड़ा (क्योंकि डाउनलोड फ़ाइल सीएसवी है), और पॉपअप एक फॉर्म पोस्ट कर रहा था।
मैं यूआरएल में फॉर्म डेटा को जोड़ने के बिना समस्या को हल नहीं कर सकता (एक पोस्ट के बजाय जीईटी के लिए), और मुझे साइट को आईई में भरोसेमंद सेट करना है (यह एक एंटरप्राइज़ ऐप है, इसलिए यह उचित है उपयोगकर्ताओं को बनाने का अनुरोध)।
फॉर्म बटन के क्लिक पर, पॉपअप विंडो और ओपनर पर एक समारोह को कॉल करता है, जो फ़ॉर्म और उसके एक्शन यूआरएल में गुजरता है। फिर पॉपअप window.close() कॉल करता है। फ़ंक्शन यूआरएल में फॉर्म डेटा जोड़ता है और नए यूआरएल में विंडो.लोकेशन सेट करता है (आईफ्रेम विचार आईई में कभी भी अच्छा काम नहीं करता है और स्पष्ट रूप से जरूरी नहीं था)।
फॉर्म यूआरएल के जवाब में, अनुरोध शीर्षलेखों में सामग्री-प्रकार: एप्लिकेशन/ऑक्टेटस्ट्रीम और सामग्री-विस्थापन "," अनुलग्नक शामिल है; फ़ाइल नाम = filename.csv "।
क्या यह मूल पृष्ठ पर फ़ॉर्म डालने के लिए काम करेगा या नए पेज को आईफ्रेम में खोलने के लिए निर्देशित करेगा (जिसे स्क्रिप्ट से उत्पन्न किया जा सकता है)? – Anonymous
बेनामी के जवाब में - मुझे लगता है कि आप जो वर्णन कर रहे हैं वह मैंने किया है। पॉपअप, सृजन और प्रारंभिक लोडिंग पर, वास्तव में मूल पृष्ठ में एक अदृश्य iFrame लिखता है। जब पॉपअप में फॉर्म सबमिट किया जाता है, तो यह डाउनलोड फ़ाइल लोड करने के लिए iFrame को निर्देशित करता है। मेरी आईई (आईई 6) ने इसे अवरुद्ध कर दिया और मुझे पैरेंट विंडो में डाउनलोड की पुष्टि करने के लिए मजबूर किया। पुष्टि पर, यह पैरेंट विंडो फॉर्म को पुनः सबमिट करने का प्रयास करता है, जो एक और पुष्टि संवाद लाता है और आम तौर पर इसे गड़बड़ कर देता है। –
मैं फॉर्म को आईफ्रेम पर सबमिट करने की सोच रहा था, जो लापरवाही पॉपअप समस्या से छुटकारा पाता है। – Anonymous