Javascript, iFrame - как кросс-браузер, получить значение из текстового поля в другом скрипте? - PullRequest
0 голосов
/ 12 сентября 2011

Следующий код работает на IE6 +

thisMessagePreFormat = document.getElementById('child').contentWindow
           .window.document.getElementById('childcont').innerHTML;

Я гуглил и пробовал разные вещи ...

alert(window.frames['child'].document.getElementById('childcont').innerHTML);
alert(document.frames('child').window.document
           .getElementById('childcont').innerHTML);
alert(document.frames('child').document.getElementById('childcont').innerHTML);
alert(document.getElementById('child').contentWindow.window
           .document.getElementById('childcont').body.innerHTML);

Однако я не могу получить доступ к значению из дочернего скрипта,Я знаю, что это обычно было бы угрозой безопасности, но в этом случае это не проблема.

РЕДАКТИРОВАТЬ:

<html><head></head>
<script language="JavaScript">
    function receive() {
        alert(document.getElementById('child').contentWindow.document.getElementById('childcont').innerHTML);
        alert('Send Message');
        alert('EE ' + document.getElementById('child').contentWindow.document.getElementById('childcont').innerHTML);
        alert('US ' + document.getElementById('child').contentWindow.window.document.getElementById('childcont').innerHTML);
        alert('ME ' + document.getElementById('child').contentWindow.document.getElementById('childcont').valueOf);
        alert('EE ' + document.getElementById('child').contentWindow.document.getElementById('childcont').innerHTML);
        //alert('US ' + document.getElementById('child').contentWindow.window.document.getElementById('childcont').innerHTML);
    }
</script>

<iframe  id="child" name="child" src="window/bottom.html" ></iframe>

<table style="CURSOR: pointer; display: inline;" cellpadding="0" cellspacing="0" onClick="javascript:receive();">
    <tr><td height="17"><nobr>&nbsp;Send&nbsp;</nobr></td>
    </tr>
</table>
</html>

В окне / bottom.html у меня есть ...

<html><head></head>
<body topmargin="0" rightmargin="0" bottommargin="0" leftmargin="0">
    <table cellpadding="0" cellspacing="0" style="border:1px solid gray;">
    <tr><td>
            <textarea id="childcont"></textarea>
    </td></tr></table>
</body>
</html>

Я пытаюсь получить значение, введенное в текстовое поле childcont в моем родительском скрипте.

Ответы [ 2 ]

0 голосов
/ 13 сентября 2011

Вы смотрите в неправильном направлении.

Изменить .innerHTML на .value:

alert(window.frames['child'].document.getElementById('childcont').value);
0 голосов
/ 12 сентября 2011

я пробовал с

 document.getElementById('child').contentWindow.document.getElementById('childcont').innerHTML;

в FF и работает нормально. пока он не междоменный, он должен работать

ваша ошибка при четвертой попытке оповещения: contentWindow - это окно iframe, оно не имеет свойства окна. кроме того, #childcont не будет иметь тела, поскольку это элемент, а не документ

...