iframe

2017-07-12 11 views
7

में जावास्क्रिप्ट दिनांक पिकर त्रुटि मेरे पास एक पृष्ठ https://dev.leadformly.com/datepicker है जिसमें एक आईफ्रेम है, उस विशेष '' में, मैं निम्नलिखित कोड द्वारा AJAX कॉल द्वारा गतिशील रूप से HTML कोड लिख रहा हूं।iframe

<script> 
    $(document).ready(function(){ 
    $.post(URL, 
     function (data) { //here it retruns the HTML code 
      $("body").html('<iframe style="width:100%;height:384px;"></iframe>'); 
      $("body iframe")[0].contentDocument.write(data.democode); 
     }, 
     'json' 
    ); 
    }); 
</script> 

अब जब मैं दिनांक पिकर पर क्लिक करें इसे पसंद कंसोल में एक त्रुटि फेंक देगा:

Uncaught TypeError: Cannot read property 'top' of undefined 

तुम मुझे इस समस्या को हल करने में मदद कर सकते हैं? या सिर्फ इसलिए यह मुझे इसे

+0

कौन सा datepicker प्रयोग कर रहे हैं: पूर्ण या आंशिक अलगाव अपने ही चिंता का विषय है, तो करने के लिए वेब घटक के अलगाव विधि का उपयोग करने का प्रयास करें? – 31piy

+0

डिफ़ॉल्ट jquery datepicker - https://jqueryui.com/datepicker/ – dang

+1

त्रुटि 'DateRangePicker' में सामने आती है, जो एक jQuery डेटपिकर नहीं है। क्या आप दोबारा जांच सकते हैं? – 31piy

उत्तर

12

हल करने क्योंकि आप माता-पिता DOM यह युक्त से एक iFrame के आंतरिक DOM का उपयोग करने की कोशिश कर रहे हैं तो आपको यह त्रुटि हो रही है में मदद मिलेगी कारण की व्याख्या। माता-पिता DOM से "क्लिक" ईवेंट किसी बच्चे के अंदर तत्वों को कॉल नहीं कर सकता iFrame

क्या मैं पूछ सकता हूं कि आप इस स्थिति में iFrame का उपयोग क्यों कर रहे हैं? मैं आपको लगभग आश्वस्त कर सकता हूं कि आप इसका उपयोग न करने से बेहतर हैं।

3

मुझे लगता है कि jQuery आईफ्रेम तत्व को पढ़ने में सक्षम नहीं है, इसलिए यह दिखा रहा है अपरिभाषित त्रुटि की संपत्ति शीर्ष नहीं पढ़ सकता है।

iframe तत्व में id="ifreame" का उपयोग करें, तो इसे काम करना चाहिए।

<iframe id="ifreame" style="width:100%;height:384px;"></iframe> 

jQuery

$("body #iframe")[0].contentDocument.write(data.democode); 
3

अंतिम विकल्प आपके पास सैंडबॉक्स संपत्ति का उपयोग कर प्रयास करें।

allow-scripts: Allows the embedded browsing context to run scripts (but not create pop-up windows). If this keyword is not used, this operation is not allowed.

https://developer.mozilla.org/en/docs/Web/HTML/Element/iframe

अगर यह काम नहीं मिलता है तो कृपया iframe से दूर स्थानांतरित। iframe तत्व को सैंडबॉक्स वाले वातावरण के रूप में बनाया गया है और जब आप अनुमति-स्क्रिप्ट खोलते हैं तो बहुत अधिक सुरक्षा जोखिमों का सामना करना पड़ता है। परिणामस्वरूप वेब पेज/बाहरी साइट आईफ्रेम में डाल सकती है ... यदि आप सैंडबॉक्सिंग को हटाते हैं तो सचमुच प्रमाण-पत्र, कुकीज, एक्सेस इत्यादि तक पहुंच प्राप्त करने से कुछ भी हो सकता है।

अगर आप इसकी सामग्री में डीओएम एक्सेस करना चाहते हैं तो इफ्रेम की अत्यधिक अनुशंसा नहीं की जाती है।

https://developer.mozilla.org/en-US/docs/Web/Web_Components