Frameset заставляет URL не изменяться при навигации по страницам. Есть ли способ обойти это? - PullRequest
2 голосов
/ 21 января 2011

У нас есть веб-сайт, и одна из его страниц содержит набор фреймов (нам нужно получить данные с другого веб-сайта).Проблема в том, что, как только вы попадаете на страницу, содержащую набор фреймов, URL-адрес больше не меняется, даже если вы нажимаете на другие ссылки.Он продолжает показывать ссылку на страницу с фреймом.Например, URL-адрес страницы с набором фреймов:

http://www.ourwebsite.com/profile.php

Обычно, когда вы нажимаете на другие ссылки на веб-сайте, он изменяется на любой URL / имя страницы на этой странице.есть.Но здесь, когда вы попадаете на страницу набора фреймов, URL-адрес каким-то образом маскируется, чтобы показывать только http://www.ourwebsite.com/profile.php, куда бы вы ни заходили на сайт.

Есть ли способ обойти это?

Ответы [ 2 ]

1 голос
/ 21 января 2011

РЕДАКТИРОВАТЬ:

Если вы хотите отобразить фрейм с другого сайта и можете управлять тем, как этот другой сайт генерирует свой HTML, следуйте инструкциям в моем исходном ответе ниже, чтобы получитьфреймы для создания гиперссылок с target="_top".

Если, однако, вы создаете сайт, над которым у вас нет контроля, то использование фреймов, вероятно, не будет работать.Вместо этого вам нужно использовать другой подход для получения данных.Например, ваше серверное приложение может использовать file_get_contents() или другую клиентскую библиотеку PHP HTTP для извлечения данных с удаленного сайта, а затем отправлять данные (без каких-либо фреймов) на ваш собственный сайт.Конечно, если вы не являетесь владельцем удаленного сайта, вам нужно убедиться, что вы можете повторно использовать их данные таким образом.

СТАРЫЙ ОТВЕТ (ИСПОЛЬЗУЙТЕ ЭТО, ЕСЛИ ВЫ УПРАВЛЯЕТЕ САЙТОМ (S) ВНУТРИ РАМКИ (S):

Типичный способ обойти это - указать URL-адреса ввсе кадры с новым URL-адресом набора фреймов, с target="_top" на гиперссылках, обычно содержащие параметры строки запроса, чтобы сообщить странице набора фреймов, какие фреймы загружать.

Например, представьте framset /frameset.php с двумя первоначально указанными фреймамив /frame1.php и /frame2.php. Ссылки внутри frame1 должны выглядеть следующим образом:

<a href="/frameset.php?frame1=link_url&frame2=frame2_current_url" target="_top">

Где link_url - это страница контента, которую вы хотите загрузить в этот фрейм, а frame2_current_url - это URL в настоящее время.загружен в frame2 (потому что вы не хотите, чтобы он изменялся при перезагрузке страницы).

Затем вам нужно изменить код для вашего родительского набора фреймов, чтобы найти эти параметры строки запроса и задать URL-адреса каждого из них.фрейм соответственно, используя URL-адреса по умолчанию для каждого фрейма, если параметры строки запроса не предоставлены. Убедитесь, что URL-кодирование всех URL-адресов вводится в параметры строки запроса.

Обратите внимание, что вы хотите использовать эту магию только для ссылок, указывающих на ссылки на вашем собственном сайте.Для ссылок на внешние сайты вы не должны переписывать URL-адреса вообще, так что вы получите в итоге гиперссылки:

<a href="http://www.externalsite.com/" target="_top">

Предостережение: этот подход действительно подходит только для сайтов, где у вас очень малоконтроль над всеми генерируемыми URL.Реальные веб-сайты обычно имеют более слабый контроль, особенно если у вас есть контент, не принадлежащий разработчикам, или если вы выполняете некоторую навигацию с помощью клиентского скрипта.

1 голос
/ 21 января 2011

<a href="foo" target="_top">

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...