Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.12.2012, 13:20
Новичок на форуме
Отправить личное сообщение для OldWarrior Посмотреть профиль Найти все сообщения от OldWarrior
 
Регистрация: 25.12.2012
Сообщений: 5

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

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

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

 alert(elem1.innerHTML); // outerHTML нигде работать не будет, его нет нигде кроме ИЕ
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2012, 13:49
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

выясните на каком этапе хром ломается, попробуйте вывести в алерт просто elem1, видимо в хроме как то по другому такие вещи вытаскиваются и за одно в других браузерах тоже не плохо было бы проверить.Насчет второго вопроса, да можно, погугли вот на это document.navigator, а проще jquery подключить там условие так можно написать, например if($.browser.msie) // если Интернет Эксплорер
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2012, 19:56
Новичок на форуме
Отправить личное сообщение для OldWarrior Посмотреть профиль Найти все сообщения от OldWarrior
 
Регистрация: 25.12.2012
Сообщений: 5

Спасибо сейчас попробую.
Ответить с цитированием
  #5 (permalink)  
Старый 25.12.2012, 20:24
Новичок на форуме
Отправить личное сообщение для OldWarrior Посмотреть профиль Найти все сообщения от OldWarrior
 
Регистрация: 25.12.2012
Сообщений: 5

Сообщение от devote Посмотреть сообщение
id="frm_left" и id="frm_right" соответственно.

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

 alert(elem1.innerHTML); // outerHTML нигде работать не будет, его нет нигде кроме ИЕ
Попробовал, в IE работает, в Хроме нихрена. Но всё равно спасибо.
Ответить с цитированием
  #6 (permalink)  
Старый 25.12.2012, 21:38
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от 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);
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #7 (permalink)  
Старый 25.12.2012, 22:37
Новичок на форуме
Отправить личное сообщение для OldWarrior Посмотреть профиль Найти все сообщения от OldWarrior
 
Регистрация: 25.12.2012
Сообщений: 5

Сообщение от devote Посмотреть сообщение
ну для хрома вроде вместо 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);
Благодарю за помощь.
Ответить с цитированием
  #8 (permalink)  
Старый 25.12.2012, 22:50
Новичок на форуме
Отправить личное сообщение для OldWarrior Посмотреть профиль Найти все сообщения от OldWarrior
 
Регистрация: 25.12.2012
Сообщений: 5

Опять неудача в ИЕ работает, а Хром как заговоренный не хочет и всё тут.
Ответить с цитированием
  #9 (permalink)  
Старый 25.12.2012, 23:29
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

var doc = frm.contentDocument || frm.contentWindow.document || frm.ownerDocument;
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему скрипт не работает с данными, которые вернул другой скрипт? Rooner jQuery 3 20.09.2012 14:56