![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Здравствуйте!
Пытаюсь сделать так, чтобы при заходе на любую страницу открывалась одна и таже структура с двумя фрэймами. Это необходимо для избежания случаев, когда пользователь зашел на страницу без фрэймов. Перечитал весь инет, наиболее подходящий вариант такой: Фаил index.htm
Такой же скрипт вставляю на страницах frame1.htm и frame2.htm. Проблема: Если пользователь зашел на index.htm, то все нормально, а вот если на frame1.htm, то структура с frameset сохраняется но внутри первого фрэйма пусто, аналогично и со вторым - если зайти на frame2.htm, то 1й отобразится, а второй - нет. Чтобы избежать вопросов зачем вообще фрэймы - нужно поставить на сайте аудио плеер с непрерывной музыкой при переходе по страницам. Ajax не подходит в данном случае, т.к. сайт на CMS, переделывать на аякс - куча проблем. Пример условный, но проблему воспроизводит. Подскажите, пожалуйста, как загрузить во фрэйм информацию, которая находится по ссылке совпадающей с адресом самого файла. |
|||
|
||||
InfMag |
|
||||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
TheDestroyer, недостаточно контекста. Я вот не пойму, если это вся страница, то почему просто код фреймов не написать?
Добавлено через 4 минуты и 41 секунду Я бы на Вашем месте так поступил:
А там уже словить location и подставить его:
|
||||
|
|||||
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо за ответ.
Поясню подробнее. В данном примере код фреймов очень простой: frame1.htm и frame2.htm отличаются только надписью в body:
Оказываается, что в IE и FF глюк, а в хроме и опере нормально работает. В Вашем примере при переходе на произвольную страницу произойдет обновление страницы - пререход на специально заготовленную с фреймами, а с нее уже должны начатьгрузиться оба фрейма. Редирект нежелателен, т.к. вид у сайта сразу портится (мне, лично, начинает напоминать всякие файлообменники с кучей рекламы и их накрутками). Идея в том, чтобы сразу при заходе на произвольную страницу загрузить сайт и плеер в нужных фреймах. Это сообщение отредактировал(а) TheDestroyer - 14.9.2011, 23:23 |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
TheDestroyer, могу порекомендовать: http://htmlbook.ru/html/iframe
Добавлено через 2 минуты и 26 секунд TheDestroyer, а ваша манипуляция довольно смутная, в таком случае вам надо предварительно убить dom <body>. Добавлено через 4 минуты и 6 секунд TheDestroyer, и как минимум выводить структуру тегов лучше сразу, к примеру так:
Попробуйте, может поможет. |
|||
|
||||
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо за совет, попробовал, к сожалению, не помогло.
Подскажите как правильно убрать dom body. Я сделал так:
Т.е. src главного фрейма вообще убрал, а по событию загрузки маленького фрейма с плеером - ставлю с небольшой задержкой src для основного фрейма. Также, как видно из кода, присутствуют действия по восстановлению ссылки в адресной строке. На данный момент у меня на локальном сервере работает везде кроме Оперы. В ней игнорируются <frameset> и все что внутри и отображается весь body что идет дальше. Попробовал загрузить на хостинг, а там все ведет себя совершенно по другому! Казалось бы, что может случиться... Вот в ФФ вылезают крякозябры и портится стиль, в ИЕ просто портится стиль, в хроме вроде работает. Все файлы в utf-8, крякозябрам просто неоткуда вылезать, текста-то нет, а они есть 3 символа... Соответственно, не подскажете ли как выявить и побороть проблему после закачки на хостинг? |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
TheDestroyer, вот жеж магия! Так я ещё не пойму, используете вы jQuery или нет, но всё-таки его подключаете. Я посоветую примерно так:
Как-то так… Пробуйте. Добавлено через 7 минут и 33 секунды Лично у меня не работает ![]() |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
А вот так работает:
Важно приставлять ?inframe=Y, поскольку эту же страницу он во фрейме открывать не хочет. Видимо защита от рекурсии. Это сообщение отредактировал(а) InfMag - 15.9.2011, 11:30 |
|||
|
||||
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
JQuery используется в теме CMS и в библиотеке history.js, которая помогает менять url в адресной строке без перезагрузки страницы. Его стараюсь не использовать, для универсальности, вдруг тему прийдется сменить. Хотя, наверное, тут все так жестко связано, что его можно использовать.
Ваш пример более правильный, попробовал его. К сожалению, эффект почти такойже: ИЕ, ФФ и хром работают, а в опере теперь мелькает весь сайт, а потом остается только фон, а содержимого нет, режиме просмотра кода страницы видно, что html сформирован правильно - только frameset с frame. Вот что показывает в Опере:
Как же заставить оперу работать? |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
TheDestroyer, эх, эта Опера, она как всегда. Походу с ней будут проблемы, ей либо подавай body, либо frameset с самого начала как я понял. Как вариант именно для Оперы сделать редирект. На индексацию это не повлияет, поскольку редирект будет JS скриптом:
Добавлено через 3 минуты и 56 секунд А так-то работает даже в IE6, а если в нём работает, то не работать может только в Opera) |
|||
|
||||
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо за пример!
Вроде все работает, даже в опере ) (тут понял, что средства отладки и разработки в опере ужасные). Есть пара вопросов: 1. Что дает параметр ?inframe=Y ? 2. Команда return останавливает текущий скрипт? Я вместо нее пытался как-то использовать break. |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
TheDestroyer, return — останавливает функцию и возвращает значение, в нашем случае — великое ничто. Как можно заметить, я выполнял все действия внутри функции, которая запускается по готовности документа (обычная практика с jQuery), и следовательно применяя здесь return я останавливаю дальнейшее выполнение своего скрипта. А break — может остановить только цикл. Либо он используется в конструкции switch. inframe=Y ничего особенного не даёт, он лишь решает вашу проблему без обновления страницы по onload, поскольку если ссылаться во фрейме на тот же путь, по которому открыта страница с самими фреймами не получается, это защита от рекурсии, поскольку если не было бы нашего JS-скрипта, получилось бы что открывается страница с фреймами, потом внутри фрейма вновь открывается страница с фреймами и так до бесконечности. А inframe=Y как бы обманывает браузер, вместо него можно было что угодно написать, хоть ?sobaka=kuliebiaka, просто получается, что путь будет другим. Надеюсь понятно выразился.
|
|||
|
||||
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо за разъяснение!
Все-таки есть проблема. Загрузка происходит следующим образом: сначала загружается основная страница (т.е. та, что должна быть в основном фрейме), затем она пропадает и загружается два фрейма. Получается, что очень тяжелая страница (основная) грузится два раза, что нежелательно. А еще это выражается в том, что в IE в режиме разработчика в отладке скриптов отображается по два одинаковых файла всех подключенный .js файлов. Можно ли этого как-то избежать? Это сообщение отредактировал(а) TheDestroyer - 17.9.2011, 00:09 |
|||
|
||||
InfMag |
|
|||
… ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1037 Регистрация: 21.11.2004 Репутация: 2 Всего: 4 |
TheDestroyer, сомневаюсь всеми фибрами, что возможно этого избежать. Это ведь и без того очень злодейский хак. Уже плясать и радоваться надо от того, что заработало! Но с другой стороны конечно можно попробовать следующим образом (это избавит от лишь мерцаний):
Это сообщение отредактировал(а) InfMag - 17.9.2011, 15:49 |
|||
|
||||
TheDestroyer |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 5.11.2007 Репутация: нет Всего: нет |
Спасибо, да, тоже думаю, что без двойной загрузки страницы никак... Может тут кэш браузеров спасает немного, т.к. все только что загруженное снова отображается...
Второй вариант - жестко переписать структуру темы CMS, тогда то уж точно не будет лишнего грузиться. С полной уверенностью сообщаю, что данное место - единственное в инете, где описано как сделать плеер без прерывания музыки при переходе со страницы на страницу. Можно прям в FAQ ). |
|||
|
||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |