C3JS - Невозможно прочитать свойство 'category10' из неопределенного

Вы можете установить href в #! вместо #

Например,

Link

не будет выполнять прокрутку при нажатии.

Осторожно! Это все равно добавит запись в историю браузера при щелчке, а это означает, что после нажатия вашей ссылки кнопка возврата пользователя не приведет их к странице, на которой они были ранее. По этой причине, вероятно, лучше использовать подход .preventDefault() или использовать оба в комбинации.

Вот сценарий, иллюстрирующий это (просто попробуйте свой браузер до тех пор, пока ваш получить полосу прокрутки): http://jsfiddle.net/9dEG7/


Для спецификаторов - почему это работает:

Это поведение указан в спецификации HTML5 в разделе . Переход к разделу идентификатора фрагмента . Причина, по которой ссылка с href в "#" заставляет документ прокручиваться вверх, заключается в том, что это поведение явно указано как способ обработки пустого идентификатора фрагмента:

2. Если fragid является пустой строкой, указанная часть документа является верхней частью документа

blockquote>

Использование href из "#!" вместо этого работает просто потому что он избегает этого правила. В восклицательном знаке нет ничего волшебного - он просто делает удобный идентификатор фрагмента, потому что он заметно отличается от типичного хрупкого и вряд ли когда-либо сопоставим с id или name элемента на вашей странице. Действительно, мы могли бы положить почти что-нибудь после хэша; единственными фрагментами, которых недостаточно, являются пустая строка, слово «верх» или строки, которые соответствуют атрибутам name или id элементов на странице.

Точнее, нам просто нужно идентификатор фрагмента, который заставит нас перейти к шагу 8 в следующем алгоритме для определения указанной части документа из fragid:

  1. Apply алгоритм парсера URL-адреса для URL-адреса и пусть fragid будет фрагментным компонентом результирующего проанализированного URL.
  2. Если fragid - пустая строка , то указанная часть документа является верхней частью документа; остановите алгоритм здесь.
  3. Пусть fragid bytes является результатом процентного декодирования fragid .
  4. Пусть decoded fragid является результатом применения алгоритма декодера UTF-8 к fragid bytes . Если декодер UTF-8 испускает ошибку декодера, отмените декодер и вместо этого перейдите к шагу с меткой no decoded fragid .
  5. Если в DOM есть элемент, который имеет ID, точно равный decoded fragid , то первым таким элементом в древовидном порядке является указанная часть документа; остановите алгоритм здесь.
  6. Не декодировано fragid : Если в DOM есть элемент, у которого есть атрибут имени, значение которого точно равно fragid ( not decoded fragid ), то первым таким элементом в древовидном порядке является указанная часть документа; остановите алгоритм здесь.
  7. Если fragid является ASCII-регистрозависимым совпадением для строки top, то указанная часть документа является верхней частью документа; остановите алгоритм здесь.
  8. В противном случае указана не какая-либо часть документа.
blockquote>

Пока мы нажимаем на шаге 8 и там не указано в документе , вступает в игру следующее правило:

Если нет указанной части ... тогда пользовательский агент ничего не должен делать.

blockquote>

, поэтому браузер не просматривает.

29
задан JJC 13 July 2016 в 06:58
поделиться