Для веб-страницы, на которой привязанные теги вставляются в HTML-сервер, я могу перейти к каждому тегу привязки, вручную изменив хэш-тег в конце URL-адреса в адресной строке или с помощью интерактивных ссылок на одной странице (<a href="#mytag">gotomytag</a>
), которые приведут меня к моим местным якорям без перезагрузки страницы.Созданные javascript метки привязки не видны при переходе на привязку тегов на той же странице
Я заметил, что это не сработает, если метки привязки на странице создаются с использованием JavaScript. Если я не сделаю что-то не так, я собираюсь сделать вывод о том, что JavaScript-хэш-теги не отображаются для навигации с помощью привязанных тегов, включенных в URL-адрес.
Чтобы сделать вещи более ясно, вот последовательность, которая не работает:
Перейдите mysite.com/mypage.php
JavaScript перед
</body>
тег добавляет мой тега привязки (<a name="here"></a>
)изменить URL в адресной строке на "mysite.com/mypage.php#here"
Я ожидаю, что браузер перейдет к тегу. Но это не так. Ничего не происходит, если тег не существует. Если я добавлю тег привязки, добавленный на шаге 2 на стороне сервера, то этот шаг будет переходить к якорю, как ожидалось.
Кроме того, я использую следующий фрагмент кода, чтобы создать элемент, который я подтвердил корректность работы с помощью встроенного хром отладчик:
`var ael = document.createElement('a');
ael.setAttribute('name','here');
someelementinmyhtmldom.appendChild(ael);`
Я надеюсь, что кто-то здесь можно задать мне прямо или подтвердить свой вывод и предложите обход.
Я на Chrome версии 55.0.2883.87 на Windows 7.
Спасибо.
EDIT: Причина моего первоначального кода не работает: Ответ на мой вопрос приведен в сообщении ниже, но если вас интересует, почему мой код не работал: я узнал, что вы не можете перейти к тег привязки, который скрыт другими элементами! Я помещал свой якорный элемент примерно на 50 пикселей выше, где он должен был (используя абсолютное размещение), чтобы компенсировать липкую панель меню вверх, и это заставило мой якорь исчезнуть из-за переполнения: скрытого свойства его содержащего элемента. Решение: убедитесь, что якорь не закрыт другими элементами или из-за перемещения за пределы элемента, переполнение которого скрыто.
Вы должны показать, что JavaScript модифицирует тег. Убедитесь, что вы используете 'document.createElement', а не' .innerHTML = ... ' –
Стоит отметить, что [' name'] (https://developer.mozilla.org/en/docs/Web/ Атрибут HTML/Element/a # attr-name) элемента '' считается устаревшим под HTML5; и теперь фрагмент ссылки/хеш служит для ссылки на определенный элемент HTML через его свойство 'id'. –
@DavidThomas Это хороший момент (мой ответ использовал 'id', даже не думая о' name'), но я бы подумал, что 'name' будет по-прежнему работать в подавляющем большинстве пользовательских агентов для обратной совместимости. Я мог ошибаться, потому что я уже давно использовал 'id'. –