2016-04-28 2 views
-1

Я столкнулся с ситуацией, когда я хотел бы быть уверенным в том, как браузеры обрабатывают URI, содержащие идентификатор фрагмента, например Products#A. Представьте, что у моего сайта две страницы: Products и FAQs. Затем внутри каждого я хочу использовать # для перехода к определенным элементам HTML. Итак:Как браузеры обрабатывают URL-адреса с идентификатором фрагмента

  1. В чем разница между href="Products#A" и href="#A", если я уже в странице Products?
  2. И если я нахожусь на странице FAQs?
  3. Выполняет ли размещение URL-адреса, например, в href="Products#A", вызов сервера или браузер знает, что он уже находится на странице Products, и он не вызывает вызов сервера?
  4. Что я могу добавить / (например, href="/products#A")? Вызывает ли это вызов сервера?
  5. Этот стандарт для всех браузеров?

Я проверил несколько тестов, но я пропустил какую-то теорию здесь.

ответ

0

Если ссылка, фрагмент освобожденный, решает тот же URL, как на текущей странице, то он будет перемещаться по текущей странице.

Если он разрешен на другую страницу, он загрузит новую страницу.

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

+0

Когда вы говорите, что если он разрешит тот же URL-адрес, что и текущая страница, он перейдет к текущей странице, он не будет звонить на сервер, не так ли? Если да, то почему (по крайней мере, в моем тесте), когда у меня нет подключения к интернету, это не работает? Я думал, что он просто перейдет к # на той странице, которая уже загружена ... вот почему этот вопрос кажется простым, но я не думаю, что это так просто. –

0

Чтобы ответить на ваши вопросы, я делаю это с помощью собственного опыта.

  1. В чем разница между href="Products#A" и href="#A", если я уже в странице Products?

    Ничего. Просто для безопасности, и если вы находитесь на другой странице, и контент отображается с использованием того же частичного (или того же источника), это может помочь.

  2. И если я нахожусь на странице FAQs?

    Он переходит нормально Products и находит элемент с и прокручивает туда.

  3. ли размещая URL, как в href="Products#A" всегда вызывает вызов сервера или же браузер знает, что он уже находится на странице Products и это не делает вызов сервера?

    Это клиентский вызов, для URL-адресов не производится никаких вызовов сервера.

  4. Является ли этот стандарт для всех браузеров?

    Я так считаю.

+0

Я только что добавил номер вопроса 4. Заставляет ли он вызвать вызов сервера? –

+0

@PauloJaneiro Это заставляет серверный вызов, если ссылка истек в кеше и/или если страница не 'Продукты'. Это ясно? –

+0

Хорошо, но, как я уже сказал в своем комментарии к Квентину, вы можете увидеть на www.nutriner.com, что, когда вы перемещаетесь дальше по домашней странице, а затем используйте ссылки в меню для перехода на другие виртуальные страницы (используя #) без Интернета соединение, которое они не показывают. Они должны (как вы уже загрузили main.html)! –

Смежные вопросы