2009-03-20 22 views
17

मेरे पास एक वेब पेज है (जेएसएफ के साथ बनाया गया) जहां कुछ लिंक उपयोगकर्ता को पीडीएफ फ़ाइल प्राप्त करने की अनुमति देते हैं।पता लगाना कि "फ़ाइल डाउनलोड" पॉपअप बंद है

जब उपयोगकर्ता इस तरह के लिंक पर क्लिक करता है, तो एक प्रतीक्षा पॉपअप (यह एक मॉडल पैनल है) प्रदर्शित होता है (क्योंकि पीडीएफ की पीढ़ी लंबी हो सकती है), और फ़ाइल बनने के बाद, आईई "फाइल डाउनलोड" "पॉपअप जो" ओपन "," सेव "और" रद्द करें "विकल्प का प्रस्ताव देता है।

क्या यह पॉपअप बंद होने पर जावास्क्रिप्ट में मेरे वेब पेज से जानने का कोई तरीका है, यानी जब उपयोगकर्ता ने पीडीएफ फाइल को सहेज लिया है (या खोला है)?

कुछ और सटीक होने के लिए, वेब पेज में जो पीडीएफ फ़ाइल के लिंक को प्रदर्शित करता है, उपयोगकर्ता को "फ़ाइल डाउनलोड" पॉपअप के लिए इंतजार करने के लिए एक मोडल पॉपअप प्रदर्शित होता है ("प्रतीक्षा पॉपअप") । समस्या यह है कि जब उपयोगकर्ता पीडीएफ फ़ाइल को सहेजता है (या खोलता है), तो "फ़ाइल डाउनलोड" पॉपअप बंद हो जाता है, लेकिन उपयोगकर्ता मूल वेबपृष्ठ पर "रिटर्न" करता है, प्रतीक्षा पॉपअप अभी भी प्रदर्शित होता है।

ध्यान दें कि अपने आवेदन केवल IE6 में चलता है, तो मैं एक IE (6) -only समाधान के खिलाफ नहीं हूँ ...

मैं भी समाधान jQuery की जरूरत है उस के साथ कोई समस्या नहीं है;)

संपादित करें: यदि किसी भी घटना को पकड़ने के लिए कोई समाधान मौजूद है, तो "फ़ाइल डाउनलोड" पॉपअप उपयोगकर्ता को प्रदर्शित किया जाता है (यानी उपयोगकर्ता को सहेजने, खोलने या रद्द करने का विकल्प चुनने से पहले), यह मेरे लिए भी ठीक होगा!

उत्तर

13

मुझे किसी अन्य प्रोजेक्ट पर इस तरह के मुद्दे पर काम करना पड़ा। अंततः मुझे एक स्मार्ट समाधान मिला, जैसा कि Stackoverflow question में बताया गया है।

विवरण निम्नलिखित पोस्ट में दिया जाता है: http://gruffcode.com/2010/10/28/detecting-the-file-download-dialog-in-the-browser

विचार "बस" जब फाइल डाउनलोड किया जाता है परिभाषित करने के लिए एक कुकी उपयोग करने के लिए है।

1

मैं बहुत यकीन है कि जवाब नहीं है, जब तक आप ब्राउज़र के लिए ActiveX प्लगइन किसी प्रकार का विचार करने के लिए (इस स्थिति में इस सवाल का जवाब अभी भी नहीं हो सकती है ...)

10

ऐसा कोई घटना मौजूद है चाहता हूँ हूँ। इसे हल करने के लिए आपको एक अलग दृष्टिकोण लेने की जरूरत है।

  1. लक्ष्य एक नाम (target="myhiddeniframe")
  2. डाउनलोड लिंक के क्लिक पर
  3. साथ एक छिपा iframe पर डाउनलोड लिंक, दिखाने के अपने लोड हो रहा है स्पिनर
  4. एक कॉलबैक कि खाल के लिए iframe की onload विशेषता निर्धारित अपने स्पिनर

नेट प्रभाव: यदि आप "स्पिन" जबकि पीडीएफ उत्पन्न होता है, और "unspin" जब "फाइल डाउनलोड" संवाद प्रकट होता है (जैसा कि जब "फाइल डाउनलोड" संवाद है बंद कर दिया के खिलाफ)।

+0

बिल्कुल वही जो मैं खोज रहा था। मेरे पास पहले से आईफ्रेम के साथ मोडल डायलॉग था, लेकिन मैं आईफ्रेम में लोडिंग पेज के दस्तावेज़ लोड में एक ईवेंट को बांधने की कोशिश कर रहा था ... यह काम नहीं करता था। आप समाधान काम करता है। धन्यवाद! – alanquillin

+6

यह ठीक लग रहा था, लेकिन मेरे मामले में iframe लोड इवेंट ट्रिगर नहीं किया गया है, संभवतः क्योंकि यह केवल तभी ट्रिगर होता है जब सामग्री HTML हो। – bluish

+1

@ ब्लूश: सादा ओल '