Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   В Chrome в фрэймовых док-ах скрипт из одного фр-ма "не видит" другой. (https://javascript.ru/forum/css-html-browser/34229-v-chrome-v-frehjjmovykh-dok-akh-skript-iz-odnogo-fr-ma-ne-vidit-drugojj.html)

OldWarrior 25.12.2012 13:20

В Chrome в фрэймовых док-ах скрипт из одного фр-ма "не видит" другой.
 
Проблема выполнением скриптов в браузере Хром.
Страница имеет два фрэйма, которые в тегах <frame> названы
name="left" и name="right" соответственно.
Вот такой код в правом фрэйме:
var elem1 = window.parent.left.document.getElementById('tab2m' );
alert(elem1.outerHTML);
отлично выводит кусок HTML-кода из левого фрэйма, но в Интернет Эксплорере, а в Хроме не работает никак даже пустого модального окна нет.
Подскажите что можно сделать с Хромом( или с кодом -:)), или, это бесполезно.
Заодно подскажите может ли скрипт определить в каком браузере открывается страница, и если может то как.

devote 25.12.2012 13:43

id="frm_left" и id="frm_right" соответственно.

var elem1 = window
    .parent
    .document
    .getElementById('frm_left')
    .contentWindow
    .document
    .getElementById('tab2m' );

 alert(elem1.innerHTML); // outerHTML нигде работать не будет, его нет нигде кроме ИЕ

ОлегА 25.12.2012 13:49

выясните на каком этапе хром ломается, попробуйте вывести в алерт просто elem1, видимо в хроме как то по другому такие вещи вытаскиваются и за одно в других браузерах тоже не плохо было бы проверить.Насчет второго вопроса, да можно, погугли вот на это document.navigator, а проще jquery подключить там условие так можно написать, например if($.browser.msie) // если Интернет Эксплорер

OldWarrior 25.12.2012 19:56

Спасибо сейчас попробую.

OldWarrior 25.12.2012 20:24

Цитата:

Сообщение от devote (Сообщение 223395)
id="frm_left" и id="frm_right" соответственно.

var elem1 = window
    .parent
    .document
    .getElementById('frm_left')
    .contentWindow
    .document
    .getElementById('tab2m' );

 alert(elem1.innerHTML); // outerHTML нигде работать не будет, его нет нигде кроме ИЕ

Попробовал, в IE работает, в Хроме нихрена. Но всё равно спасибо.:)

devote 25.12.2012 21:38

Цитата:

Сообщение от OldWarrior
Попробовал, в IE работает, в Хроме нихрена. Но всё равно спасибо.

ну для хрома вроде вместо contentWindow.document нужно юзать contentDocument если я не ошибаюсь конечно.

что-то вроде:
var frm = window.parent.document.getElementById('frm_left');
var doc = frm.contentDocument || frm.contentWindow.document;
var elem1 = doc.getElementById('tab2m' );
alert(elem1.innerHTML);

OldWarrior 25.12.2012 22:37

Цитата:

Сообщение от devote (Сообщение 223485)
ну для хрома вроде вместо contentWindow.document нужно юзать contentDocument если я не ошибаюсь конечно.

что-то вроде:
var frm = window.parent.document.getElementById('frm_left');
var doc = frm.contentDocument || frm.contentWindow.document;
var elem1 = doc.getElementById('tab2m' );
alert(elem1.innerHTML);

Сейчас попробую. Кстати по поводу outerHTML ты неправ в Хроме для обычной страницы или внутри одного фрэйма вот такой код работает
var elem2 = document.getElementById('tdiv44');
alert(elem2.outerHTML);
Благодарю за помощь.

OldWarrior 25.12.2012 22:50

Опять неудача в ИЕ работает, а Хром как заговоренный не хочет и всё тут.

Deff 25.12.2012 23:29

var doc = frm.contentDocument || frm.contentWindow.document || frm.ownerDocument;


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