it-swarm.com.de

Liefert den Wert des Eingabefeldes in einem iframe

Ich erstelle ein Formular nur mit Javascript. Ich versuche, Javascript zu verwenden, um den Wert des Eingabefelds zu ermitteln, das sich in einem _ iframe befindet. Ist es möglich, den Wert eines Feldes zu ermitteln, das sich in einem iframe befindet?

18

Ja, es sollte möglich sein, auch wenn die Site von einer anderen Domain stammt.

Auf einer HTML-Seite auf meiner Website habe ich beispielsweise einen iFrame, dessen Inhalt von einer anderen Website stammt. Der iFrame-Inhalt ist ein einzelnes Auswahlfeld. 

Ich muss den ausgewählten Wert auf meiner Site lesen können. Mit anderen Worten, ich muss die Auswahlliste aus einer anderen Domäne in meiner eigenen Anwendung verwenden. Ich habe keine Kontrolle über Servereinstellungen.

Daher könnten wir anfangs versucht sein, so etwas (vereinfacht) zu tun:

HTML in meiner Site:

<iframe name='select_frame' src='http://www.othersite.com/select.php?initial_name=jim'></iframe>
<input type='button' name='save' value='SAVE'>

HTML-Inhalte von iFrame (geladen von select.php in einer anderen Domäne):

<select id='select_name'>
    <option value='john'>John</option>
    <option value='jim' selected>Jim</option>
</select>

jQuery:

$('input:button[name=save]').click(function() {
    var name = $('iframe[name=select_frame]').contents().find('#select_name').val();
});

Ich erhalte jedoch diese Javascript-Fehlermeldung, wenn ich versuche, den Wert zu lesen:

Einen Frame mit Origin blockiert " http://www.myownsite.com " durch Zugriff auf einen Frame mit Origin " http://www.othersite.com ". Protokolle, Domänen und Ports müssen übereinstimmen.

Um dieses Problem zu umgehen, können Sie den iFrame von einem Skript in Ihrer eigenen Site indirekt beziehen und den Inhalt von der anderen Site mit einer Methode wie file_get_contents() oder curl usw. lesen lassen.

Erstellen Sie also auf Ihrer eigenen Site ein Skript (z. B. select_local.php im aktuellen Verzeichnis) mit ähnlichem Inhalt:

PHP Inhalt von select_local.php:

<?php
    $url = "http://www.othersite.com/select.php?" . $_SERVER['QUERY_STRING'];
    $html_select = file_get_contents($url);
    echo $html_select;
?>

Ändern Sie auch den HTML-Code, um dieses lokale Skript (anstelle des Remote-Skripts) aufzurufen:

<iframe name='select_frame' src='select_local.php?initial_name=jim'></iframe>
<input type='button' name='save' value='SAVE'>

Nun sollte Ihr Browser denken, dass der iFrame-Inhalt von derselben Domäne geladen wird.

28
Stefan
<iframe id="upload_target" name="upload_target">
    <textarea rows="20" cols="100" name="result" id="result" ></textarea>
    <input type="text" id="txt1" />
</iframe>

Sie können Wert von JQuery erhalten

$(document).ready(function(){
  alert($('#upload_target').contents().find('#result').html());
  alert($('#upload_target').contents().find('#txt1').val());
});

nur mit derselben Domain arbeiten

4
Harshit Tailor
document.getElementById("idframe").contentWindow.document.getElementById("idelement").value;
1
Mahdi

Ohne Iframe können wir dies per JQuery tun, aber es gibt Ihnen nur HTML-Seitenquelle und keine dynamischen Links oder HTML-Tags werden angezeigt . Fast identisch mit PHP-Lösung, aber in JQuery :) Code ---

var purl = "http://www.othersite.com";
$.getJSON('http://whateverorigin.org/get?url=' +
    encodeURIComponent(purl) + '&callback=?',
    function (data) {
    $('#viewer').html(data.contents);
});
1
Manish Shukla