2013-10-03 12 views
6

Chcę automatycznie wypełniać pola tekstowe na innej stronie, więc piszę krótki skrypt, aby to zrobić. Załaduję element iframe z witryną internetową i jeśli ta ramka jest załadowana, powinna wypełnić formularze tekstowe. Więc napisałem to w autofill.php:Wypełnianie formularzy tekstowych na innej stronie internetowej w 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> 

I to napisałem w fill.js:

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

Oto fiddle

Jeśli mogę to zrobić z pliku .php zamiast strony internetowej, to działa dobrze. Oto demo bez strony internetowej

Czy ktoś może dać mi wskazówkę?

Cheers

Odpowiedz

12

Kiedy załadować stronę z innej domeny w produkt iframe, nie można zrobić niczegodo strony iframe z JavaScript na swojej stronie.

Jeśli chodzi o przeglądarkę, element iframe jest oddzielnym oknem i nie ma do niego dostępu. Wyobraź sobie, że użytkownik miał otwartą stronę bankową w jednym oknie, a twoja strona otworzyła się w innym oknie. Wiesz, że przeglądarka nie pozwala, aby twój kod JavaScript kolidował ze stroną bankową, prawda?

To samo dotyczy sytuacji, gdy druga strona jest w numerze iframe. To wciąż zupełnie oddzielne okno przeglądarki, ustawione tak, aby wyglądało jak na twojej stronie.

W twoim przykładzie roboczym kod działa, ponieważ pola nazwy użytkownika i hasła są , a nie w iframe z innej domeny. Są one częścią tej samej strony, na której znajduje się kod JavaScript.

Jeśli iframe jest załadowany z tej samej domeny co strona główna, możesz zrobić wszystko, co chcesz, w tym wypełniając pola formularza. Kod będzie nieco inny, ponieważ musisz uzyskać dostęp do dokumentu iframe zamiast dokumentu głównego, ale to proste. Ale jeśli iframe pochodzi z innej domeny, nie masz szczęścia.

+0

Hm porządku, brzmi logicznie. Czy istnieje inny sposób, czy nie jest to możliwe? – Roman

+0

Naprawdę nie ma mowy, przepraszam! Zabezpieczenia przeglądarki nie pozwalają na to. –

+0

Dobra, szkoda. Dzięki za wsparcie :) – Roman

2

Naciskając przycisk "Wyślij", kopiuj wartość wejściową z wejściowego pola tekstowego do pola tekstowego iframe (lub przeciwnie do niego). można zaimplementować to lubią:

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> 

I test2.html:

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