2013-10-03 5 views
6

Ich möchte Textfelder auf einer anderen Website automatisch ausfüllen, also schreibe ich ein kurzes Skript, um dies zu tun. Ich lade einen iframe mit einer Webseite darin und wenn dieser Iframe geladen wird, sollte er die Eingabetextformen ausfüllen. Also schrieb ich dies in autofill.php:Füllen Eingabe Textformulare auf andere Website in 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> 

Und das schrieb ich in fill.js:

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

Hier ist ein fiddle

Wenn ich es mit einer Php-Datei anstelle einer Webseite, es funktioniert gut. Hier ist ein demo ohne Website

Kann mir jemand einen Tipp geben?

Prost

Antwort

12

Wenn Sie eine Seite aus einer anderen Domäne in eine iframe laden Sie etwas auf die iframe Seite von JavaScript in Ihre Seite nicht tun können.

Soweit der Browser betroffen ist, ist der Iframe ein separates Fenster und Sie haben keinen Zugriff darauf. Stellen Sie sich vor, dass der Benutzer eine Banking-Seite in einem Fenster geöffnet hat und Ihre Seite in einem anderen Fenster geöffnet ist. Sie wissen, dass der Browser Ihren JavaScript-Code nicht in die Banking-Seite eingreifen lassen würde, oder?

Dasselbe gilt, wenn sich die andere Seite in einem iframe befindet. Es ist immer noch ein völlig separates Browserfenster, es ist nur so positioniert, dass es aussieht, als wäre es in Ihrer Seite.

In Ihrem Arbeitsbeispiel funktioniert der Code, weil die Felder Benutzername und Kennwort nicht in einem iframe aus einer anderen Domäne sind. Sie sind Teil derselben Seite, auf der sich der JavaScript-Code befindet.

Wenn die iframe aus der gleichen Domäne wie Ihre Hauptseite geladen wird, können Sie alles tun, was Sie wollen, einschließlich der Ausfüllung von Formularfeldern. Der Code wäre etwas anders, weil Sie auf das Dokument iframe statt auf das Dokument der Hauptseite zugreifen müssen, aber das ist einfach. Aber wenn die iframe aus einer anderen Domäne stammt, haben Sie kein Glück.

+0

Hm ok, klingt logisch. Gibt es einen anderen Weg oder ist das nicht möglich? – Roman

+0

Wirklich keine Möglichkeit, sorry! Die Browser-Sicherheit lässt dies nicht zu. –

+0

Mh okay, wie schade. Danke für die Unterstützung :) – Roman

2

Durch Drücken der Schaltfläche Senden, Eingabewert kopiert von Eingabetextfeld in Iframe Textfeld (oder umgekehrt). Sie können implementieren es mögen:

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> 

Und test2.html:

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