Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как передать значения переменной из одного фрейма в другой в Google Chrome (https://javascript.ru/forum/events/77773-kak-peredat-znacheniya-peremennojj-iz-odnogo-frejjma-v-drugojj-v-google-chrome.html)

Freestyle007 19.06.2019 04:51

Как передать значения переменной из одного фрейма в другой в Google Chrome
 
Добрый день! Ребята не могу разобраться, как передать данные переменной из нижнего фрейма в верхний в Google Chrome.

Фрейм с тестом


<script type="text/javascript">
    var frm=window.parent.stat.document.forms.stat; // переменная задающая окно stat
    frm.ntop.value=1; //значениe, задающее номер темы 
    frm.total.value=2; //значениe, количество тестов 
    frm.good.value=0; // значениe, оценку по данной теме
</script>

Верхний фрейм, содержащий "шапку". При выборе разных тем, значения ntop, total и good должны изменяться


<body>
<form action="#" name="stat">
Тема номер: <input name="ntop" value="0" disabled="disabled" size="3" />
Решено: <input name="good" value="0" disabled="disabled" size="3" />
из <input name="total" value="0" disabled="disabled" size="3" />
</form>
</body>


Данный код не работает в Google Chrome. При выборе темы теста на основой странице, значения не передаются в верхний фрейм, в Firefox работает корректно.
Как поменять/присвоить значения в верхнем фрейме в форме name="stat"?

В файле index.html указано следующее:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head></head>
<frameset rows="60px,*" name="frameset" border="0">
<frame src="ind_up.html" name="stat" scrolling="0" noresize="yes"/>
<frame src="ind_ex.html" name="main" scrolling="0" noresize="yes"/>
</frameset>
</html>


Теги iframe использовать не удобно, потому что приходится жестко указывать высоту фрейма. При использовании frameset, нижняя страница отображается целиком. Да, не поддерживается в html5, но это пока не очень волнует.


В файле ind_up.html, форма выглядит вот так, это собственно вся страница, которая загружается в верхний фрейм:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
...
<body>
<form action="#" name="stat">
Тема номер: <input name="ntop" value="0" disabled="disabled" size="3" />
Решено: <input name="good" value="0" disabled="disabled" size="3" />
из <input name="total" value="0" disabled="disabled" size="3" />
</form>
</body>


В файле ind_ex.html, тело документа выглядит вот так:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<body>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td width="10%" align="center" valign="top"></td>
<td width="90%" align="left" valign="center">
    <H2>Тесты</h2>
 
        <li id=soder><A HREF="test1.html">Тест 1</a></li>
        <li id=soder><A HREF="test2.html">Тест 2</a></li>
...
</td>
</table>
</body>
</html>


При переходе на страницу test1.html, страница выглядит вот так:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript">
    var frm=window.parent.stat.document.forms.stat;
    frm.ntop.value=1; // номер темы 
    frm.total.value=2; // количество тестов 
    frm.good.value=0; //  оценка по данной теме
</script>
</head>
<body>
...
</body>
</html>


Собственно требуется чтобы при выборе темы на странице ind_ex.html (фрейм "main"), при загрузке страницы test1.html, изменялись значения на странице ind_up.html (фрейм "stat"). В Firefox работает корректно, в Chrome браузерах значения не передаются.

Dilettante_Pro 19.06.2019 10:59

Freestyle007,
У меня вполне работает в Chrome 75.0.3770.100, IE 11.0.130, FF 62.0.3,
Opera 48.0
- без каких-либо проблем

Freestyle007 19.06.2019 11:54

Цитата:

Сообщение от Dilettante_Pro (Сообщение 509184)
Freestyle007,
У меня вполне работает в Chrome 75.0.3770.100, IE 11.0.130, FF 62.0.3,
Opera 48.0
- без каких-либо проблем

У меня фреймы строятся, и страницы в них отображаются. Но в Google Chrome не передаются значения из одного фрейма в другой. В Firefox работает корректно. Не пойму в чем проблема

Google Chrome: Версия 72.0.3626.109 (Официальная сборка), (64 бит)
Mozilla Firefox: Версия 60.5.0esr (64-бит) Quantum

Dilettante_Pro 19.06.2019 11:56

Freestyle007,
И в консоли нет никаких сообщений?

Freestyle007 19.06.2019 12:12

Вложений: 1
Нет. Вот готовые макеты страниц Вложение 4181

Не понимаю в чем причина... Почему Google Chrome не изменяет переменные при переходе на страницу.

Проверил в IE, также не работает. Корректно работает только в Firefox

Dilettante_Pro 19.06.2019 12:38

Freestyle007,
Сначала проверял на текстах из пост#1,
ваши макеты из архива у меня тоже работают во всех браузерах

Dilettante_Pro 19.06.2019 12:44

Freestyle007,
На всякий случай уберите одинаковые id в файле ind_ex.html - они должны быть уникальными.
У меня это, правда, не мешает...

Freestyle007 19.06.2019 12:46

Цитата:

Сообщение от Dilettante_Pro (Сообщение 509191)
Freestyle007,
Сначала проверял на текстах из пост#1,
ваши макеты из архива у меня тоже работают во всех браузерах

А что именно у вас работает? При выборе ссылки test1 переходите на страницу и в верхнем фрейме меняются значения: номер темы, количество тестов и оценка?
Вы через виртуальный сервер типа Apache запускаете или просто распаковываете архив на диск и открываете в браузерах?

Dilettante_Pro 19.06.2019 12:52

Freestyle007,
При выборе ссылки test1 значения меняются, test2 - снова меняются.

Сервер Microsoft IIS

Freestyle007 19.06.2019 12:55

Цитата:

Сообщение от Dilettante_Pro (Сообщение 509192)
Freestyle007,
На всякий случай уберите одинаковые id в файле ind_ex.html - они должны быть уникальными.
У меня это, правда, не мешает...

ID для элементов <li> нужны только для CSS, они ни на что не влияют.
Но я попробовал убрать, бесполезно. Подумал, что браузер не может корректно отобразить страницу из-за небезопастного содержимого, объявление в мета-тегах ничего не исправляет
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r"/>


Такое ощущение, что какая-то настройка безопасности в Google Chrome не даёт возможности обмениваться данными фреймам между собой.


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