Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как поймать родительское окно. (https://javascript.ru/forum/events/2491-kak-pojjmat-roditelskoe-okno.html)

Kapriz 05.01.2009 14:26

Как поймать родительское окно.
 
Как поймать родительское окошко из дочернего? А именно, надо найти textarea по id в родительском окошке, и вставить туда данные.

Сейчас сделал скрипт, типа текстового редактора. Кнопки находятся в том-же документе, где и textarea. Работает.

Делаю функцию загрузки и вставки файлов. При нажатии на кнопку в редакторе вылезает окошко, которое загружает файлы в папку пользователя и всячески администрирует их. Вопрос - как сделать вставку ссылки на файл в родительский, основной документ?

Вот основной скрипт:
Код:

function tagit(txtstart,txtend) {
        document.getElementById('editor_field').focus();
        if (document.selection) {
                        // ie & may be opera 8   
                        var rng = document.selection.createRange();
                        if (rng.text) {
                                document.selection.createRange().text = txtstart + rng.text + txtend;
                                } else {
                                document.getElementById('editor_field').value += txtstart  + txtend;
                                }
                        document.getElementById('editor_field').focus();
                        }
        else if (document.getElementById('editor_field').selectionStart || document.getElementById('editor_field').selectionStart == '0') {
        // mozilla: intellegent bcodes support   
        var selStart = document.getElementById('editor_field').selectionStart;
        var selEnd = document.getElementById('editor_field').selectionEnd;
        var s = document.getElementById('editor_field').value;   
        s = s.substring(0, selStart) + txtstart + s.substring(selStart, selEnd) + txtend + s.substring(selEnd, s.length);
                document.getElementById('editor_field').value = s;
        if (selEnd != selStart) {
                document.getElementById('editor_field').selectionStart = selStart;
                document.getElementById('editor_field').selectionEnd = selEnd + txtstart.length + txtend.length;
                } else {
                document.getElementById('editor_field').selectionStart = selStart + txtstart.length;
                document.getElementById('editor_field').selectionEnd = document.getElementById('editor_field').selectionStart;
                }
        } else {
        // other browsers   
        document.getElementById('editor_field').value += txtstart + txtend; 
        }
        }


Kapriz 05.01.2009 14:37

Нашел
 
Нашел здесь http://www.webreference.com/js/tutorial1/opener.html

Финальная версия скрипта, работает:
Код:


function add_tag(txtstart,txtend) {
        window.opener.document.getElementById('editor_field').focus();
        if (window.opener.document.selection) {
                        // ie & may be opera 8   
                        var rng = window.opener.document.selection.createRange();
                        if (rng.text) {
                                window.opener.document.selection.createRange().text = txtstart + rng.text + txtend;
                                } else {
                                window.opener.document.getElementById('editor_field').value += txtstart  + txtend;
                                }
                        window.opener.document.getElementById('editor_field').focus();
                        }
        else if (window.opener.document.getElementById('editor_field').selectionStart || window.opener.document.getElementById('editor_field').selectionStart == '0') {
        // mozilla: intellegent bcodes support   
        var selStart = window.opener.document.getElementById('editor_field').selectionStart;
        var selEnd = window.opener.document.getElementById('editor_field').selectionEnd;
        var s = window.opener.document.getElementById('editor_field').value;   
        s = s.substring(0, selStart) + txtstart + s.substring(selStart, selEnd) + txtend + s.substring(selEnd, s.length);
                window.opener.document.getElementById('editor_field').value = s;
        if (selEnd != selStart) {
                window.opener.document.getElementById('editor_field').selectionStart = selStart;
                window.opener.document.getElementById('editor_field').selectionEnd = selEnd + txtstart.length + txtend.length;
                } else {
                window.opener.document.getElementById('editor_field').selectionStart = selStart + txtstart.length;
                window.opener.document.getElementById('editor_field').selectionEnd = window.opener.document.getElementById('editor_field').selectionStart;
                }
        } else {
        // other browsers   
        window.opener.document.getElementById('editor_field').value += txtstart + txtend; 
        }
        }



Часовой пояс GMT +3, время: 11:35.