2012-05-29 4 views
9

के बाद जावास्क्रिप्ट कॉल फ़ंक्शन मैं अपनी विंडो के बाद फ़ंक्शन को कॉल करने का प्रयास कर रहा हूं। ओपन फ़ंक्शन पूरी तरह से लोड हो गया है।windows.open

हालांकि, ऑनलोड फ़ंक्शन का उपयोग बहुत जल्द कहा जा रहा है। जो यूआरएल मारा जा रहा है वह एक्सेल स्प्रैडशीट खोलता है और डाउनलोड करने के लिए 2 सेकंड से 1 मिनट तक ले सकता है।

ऑनलोड फ़ंक्शन को जल्द ही विंडो.ओपेन फ़ंक्शन के रूप में बुलाया जा रहा है। हालांकि, मुझे पता होना चाहिए कि एक्सेल डॉक्टर खोला गया था - जब यूआरएल मारा गया था।

मैं एक अंतराल की स्थापना की कोशिश की है, लेकिन वह नहीं बुलाया जा रहा है:

w = window.open(url,'_parent',false); 

w.onload = function(){ 
    console.log('here'); 
    setInterval(function(){ 
     alert('Hi'); 
    },10); 
+0

बच्चे की खिड़की में ऐसा क्यों नहीं कर रहे हैं? और यदि आपको एक्सेल फ़ाइल खोलने वाले कोड को साझा करने में कोई फर्क नहीं पड़ता है, तो यह बहुत अच्छा होगा - क्योंकि एक्सेल फ़ाइल लोड वह असली ट्रिगर है जो आप चाहते हैं .. –

+0

क्या आप बस यह सुनिश्चित करना चाहते हैं कि एक्सेल फ़ाइल खुली है या आपको इसकी आवश्यकता है पता है कि यह कब खोला गया? – zaw

+0

मेरे पास एक extjs ग्रिड बैठा है जिसके बारे में पता होना चाहिए कि एक्सेल फ़ाइल खोला गया है/खिड़की ने दस्तावेज़ को पूरी तरह से लोड किया है। यह एक CGI स्क्रिप्ट है जिसे एक्सेल फ़ाइल खोलने के लिए बुलाया जाता है। – pm13

उत्तर

4

सबसे पहले ध्यान दें कि आदेश क्योंकि क्रॉस-डोमेन प्रतिबंध के अवरुद्ध किया जा रहा बिना ऐसा करने के लिए (या पर CORS हेडर parameterize करने के लिए बिना अपने सर्वर), आपको:

  • दोनों अपने मुख्य पृष्ठ और एक ही डोमेन से पॉपअप सामग्री (अपने एक्सेल फ़ाइल), और एक ही बंदरगाह
  • http:// में अपने मुख्य पृष्ठ खोलने के लिए और की सेवा नहीं file://

उन परिस्थितियों का सम्मान कर रहे हैं में, सबसे अच्छा समाधान अपने load समारोह प्रतीक्षा करता है के रूप में jQuery का उपयोग करने के "जब तक इस तरह के चित्र के रूप में सभी परिसंपत्तियों पूरी तरह से प्राप्त किया गया है" है:

<html> 
    <head> 
    <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 
<body> 
<script> 
var popup = window.open('popup.html'); 
$(popup.document).load(function() { 
    alert('loaded'); 
    // do other things 
}); 
</script> 
</body> 
</html> 

से सावधान रहें आपकी वैश्विक योजना: जब आप सोचते हैं कि वे फ़ाइल को "खोलें" तो प्रत्येक ब्राउज़र/कॉन्फ़िगरेशन कुछ अलग हो सकता है। एक सरल open के साथ पता लगाने का कोई तरीका नहीं है अगर उन्होंने इसे खारिज करने का निर्णय लिया, तो उचित प्लगइन नहीं था, बस इसे डाउनलोड किया गया।

+0

मुझे यकीन नहीं है कि कॉर्स हेडर विंडो मूल को बाईपास करने की अनुमति देता है। – user2284570