После посещения ссылок Firefox выборочно пропускает изменение состояния или стиль: посещение - PullRequest
2 голосов
/ 23 апреля 2009

После нажатия на ссылку с общим href (локальная страница или веб-сайт) и href успешно загружен, и FF2, и IE7 отобразят ссылка с: посетил стиль.

Для ссылок с href = "javascript: anyfunc ()", IE7 работает как выше в то время как FF2 не отображает: посещенный стиль. Без изменений DOCTYPE.

Q: Правильно ли либо поведение со ссылками JS и: посещенные?

В: FF2 оставляет якорное состояние неизменным после нажатия на ссылку JS?

Q: без необходимости присоединять обработчик onClick или изменять классы / стиль с JS, есть ли краткий способ сообщить FF2: visted стиль не зависит от того, является ли href другой страницей или ссылкой JS?

Пример:

<html>
<head>
<style>
div.links { font-size: 18px; }
div.links a { color: black; text-decoration: none; }

div.links a:visited { background-color: purple; color: yellow; }
div.links a:hover { background-color: yellow; color: black; }
</style>

<script>
function tfunc(info) { alert("tfunc: info = " + info) }
</script>
</head>
<body>

<div class="links">
    <a href="javascript:tfunc(10)">JS Link 1</a><br>
    <a href="javascript:tfunc(20)">JS Link 2</a><br>
    <a href="http://www.google.com/">Common href, google</a>
</div>

</body>
</html>

Ответы [ 5 ]

1 голос
/ 16 июня 2011

Я столкнулся с проблемой, я думаю, что этот вопрос задает. Рассмотрим этот простой пример:

таблица стилей:

#homebox { display: none;}
#contactbox { display: none; }

HTML:

<a id="#home"></a>
<a href="#home" onclick="return showHideDiv(this);">Show Home</a>
<div id="homebox">Your home</div>
<a id="#contact onclick="return showHideDiv(this);"></a>
<div id="contactbox">Contact Info</div>

сценарий:

function showHideDiv(elem) {
if( elem.style.display && elem.style.display == "none"; ) elem.style.display = "block";
else if( elem.style.display && elem.style.display == "block"; ) elem.style.display = "none";
return true;
}

Хотя это и не самый красивый код, он указывает на некоторые проблемы, которые могут возникнуть при использовании javascript onlick внутри href. Причина, по которой вы можете захотеть сделать что-то подобное, состоит в том, чтобы создавать динамические изменения содержимого без перезагрузки, которые показывают посещенный стиль. Ссылки будут удобнее кнопок, поэтому статус посещенных ссылок сохраняется, хотя и внутренний. Тем не менее, я заметил некоторые проблемы с браузерами, вызывающими статус посещений на внутренних ссылках, не говоря уже о внутренних ссылках с обработчиками событий JavaScript onclick Кнопка потребует кодирования функции для управления посещаемыми стилями.

1 голос
/ 30 апреля 2009

Вот мой дубль:

В: Правильно ли либо поведение с ссылками JS и: посещенные?

Целью ссылки является получение ресурса. Если ваша ссылка никуда не идет, что вы "посещаете"? На мой взгляд, с этой точки зрения поведение правильное.

Q: FF2 оставляет якорное состояние неизменным после нажатия на ссылку JS?

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

В: Без необходимости присоединять обработчик onClick или изменять классы / стиль с помощью JS, есть ли краткий способ сообщить FF2, что использовать: visted-стиль не зависит от того, является ли href другой страницей или ссылкой JS?

Я так не думаю. Вы, вероятно, сможете получить эффект посещения, если вы укажете href ссылки на «#» и используете обработчик onclick для своих нужд JavaScript.

1 голос
/ 30 апреля 2009

a: hover ДОЛЖЕН идти после определения: link и a: посещения в определении CSS, чтобы быть эффективным!

1 голос
/ 23 апреля 2009

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

Есть ли способ связать что-то, например, страницу HTML, и прикрепить к ней обработчики событий (и вернуть false, чтобы остановить переход по ссылке)? И если ссылки на самом деле являются JS-хуками, я бы использовал такой элемент, как <button>, и соответствующим образом стилизовал бы его ... не забудьте добавить cursor: pointer, чтобы конечный пользователь знал, что clickable .

Использование inline javascript:function(something) в href - плохая практика. Попробуйте ненавязчивые обработчики событий.

0 голосов
/ 23 апреля 2009

Я согласен с Алексом, ссылка должна быть ссылкой на что-то, а не JS-триггером - кнопка будет гораздо более эффективной здесь.

Если вы хотите присоединить некоторую функцию JS к ссылке, вам определенно следует использовать ненавязчивый JS, чтобы прикрепить эту функцию к событию click.

Например, используя jQuery:

$("#myLinkID").click(function () { 
  //function stuff
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...