iframe

2013-10-03 10 views
6

में अन्य वेबसाइट पर इनपुट टेक्स्ट फॉर्म भरें मैं टेक्स्टबॉक्स को अन्य वेबसाइट पर ऑटोफिल करना चाहता हूं इसलिए मैं ऐसा करने के लिए एक छोटी लिपि लिख रहा हूं। मैं इसमें एक वेबसाइट के साथ एक आईफ्रेम लोड कर रहा हूं और यदि यह आईफ्रेम लोड हो गया है, तो उसे इनपुट टेक्स्ट फॉर्म भरना चाहिए। इसलिए मैं autofill.php में यह लिखा है:iframe

<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script> 
<script src="fill.js"></script> 
<iframe name="autofillframe" src="https://e-services.blum.com/main/" style="width:100%; height:100%;"></iframe> 

और यह मैं fill.js में लिखा है:

$(document).ready(function(e) { 
    $('#username').val('username'); 
    $('#kennwort').val('password'); 
}); 

यहाँ है एक fiddle

अगर मैं बजाय एक वेबसाइट के एक .php फ़ाइल के साथ यह करते हैं, यह बढ़िया काम करता है। वेबसाइट

कोई भी मुझे कोई संकेत दे सकता है?

चीयर्स

उत्तर

12

जब आप एक iframe में एक अलग डोमेन से एक पृष्ठ लोड करते हैं, आप अपने पृष्ठ में जावास्क्रिप्ट से iframe पृष्ठ पर कुछ भी नहीं कर सकते।

जहां तक ​​ब्राउज़र का संबंध है, iframe एक अलग विंडो है और आपके पास इसका कोई उपयोग नहीं है। कल्पना करें कि उपयोगकर्ता के पास एक विंडो में एक बैंकिंग पृष्ठ खुल गया था और आपका पृष्ठ दूसरी विंडो में खुलता है। आप जानते हैं कि ब्राउजर आपके जावास्क्रिप्ट कोड को बैंकिंग पेज में हस्तक्षेप नहीं करेगा, है ना?

वही बात तब लागू होती है जब दूसरा पृष्ठ iframe में होता है। यह अभी भी एक पूरी तरह से अलग ब्राउज़र विंडो है, यह बस स्थित है, ऐसा लगता है कि यह आपके पृष्ठ के अंदर है।

आपके कामकाजी उदाहरण में, कोड काम करता है क्योंकि उपयोगकर्ता नाम और पासवर्ड फ़ील्ड किसी अन्य डोमेन से iframe में नहीं हैं। वे उसी पृष्ठ का हिस्सा हैं जो जावास्क्रिप्ट कोड में है।

यदि iframe आपके मुख्य पृष्ठ के समान डोमेन से लोड किया गया है, तो आप फ़ॉर्म फ़ील्ड भरने सहित कुछ भी कर सकते हैं। कोड थोड़ा अलग होगा क्योंकि आपको मुख्य पृष्ठ दस्तावेज़ के बजाय iframe दस्तावेज़ तक पहुंचने की आवश्यकता है, लेकिन यह आसान है। लेकिन अगर iframe किसी भिन्न डोमेन से है, तो आप भाग्य से बाहर हैं।

+0

हम्म ठीक है, तार्किक लगता है। क्या कोई और तरीका है या यह संभव नहीं है? – Roman

+0

वास्तव में कोई रास्ता नहीं, क्षमा करें! ब्राउज़र सुरक्षा इसकी अनुमति नहीं देगा। –

+0

एमएच ठीक है, क्या करुणा है। मुझे समर्थन देने के लिए धन्यवाद :) – Roman

2

सबमिट बटन दबाकर, इनपुट टेक्स्टबॉक्स से इनपुट मान प्रतियां iframe टेक्स्टबॉक्स (या इसका विरोध) पर। आप इसे पसंद को लागू कर सकते हैं:

test1.html

<!doctype html> 
<html> 
<head> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
    <script> 
     $(document).ready(function(){ 
      $('#submit').click(function(){ 
       var iframe = document.getElementById('myiframe'); 
       var doc = iframe.contentDocument || iframe.contentWindow.document; 
       var elem = document.getElementById('username'); 
       doc.getElementsByName('user')[0].value = elem.value; 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <input type="text" id="username"> 
    <input type="submit" id="submit"> 
    <iframe id="myiframe" frameborder="1" src="test2.html"></iframe> 
</body> 
</html> 

और test2.html:

<!DOCTYPE html> 
<html> 
<body> 
    <input type="text" name="user" id="user"> 
</body> 
</html>