访问链接后,Firefox会选择性地跳过状态更改或访问样式

时间:2009-04-22 23:51:06

标签: javascript firefox anchor visited

点击带有常用href(本地页面或网站)的链接后 并且href成功加载,FF2和IE7都会显示 与a:访问样式的链接。

对于带有href =“javascript:anyfunc()”的链接,IE7的工作方式如上 而FF2不显示:访问样式。没有任何变化 DOCTYPE。

问:使用JS链接的行为和:访问被认为是正确的吗?

问:点击JS链接后,FF2是否保持锚状态不变?

问:无需附加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 个答案:

答案 0 :(得分:1)

很难对这些类型的链接进行设置...虽然它们可能具有相同的href,但它们可能通过JS做任何事情(这可能使它看起来不会访问它)。

有没有办法链接到HTML页面之类的东西并将事件处理程序附加到链接(并返回false以阻止链接点击)?如果链接实际上是JS钩子,我会使用诸如<button>之类的元素并相应地设置它...记得添加cursor: pointer以便最终用户知道它是可点击的< / em>的

在href中使用内联javascript:function(something)是不好的做法。尝试不引人注意的事件处理程序。

答案 1 :(得分:1)

a:hover必须在a:link和a:在CSS定义中访问才能生效!

答案 2 :(得分:1)

这是我的看法:

  

问:使用JS链接的行为和:访问被认为是正确的吗?

链接的目的是检索资源。如果你的链接没有去任何地方,你在“访问”什么?在我看来,从这个角度来看,这种行为是正确的。

  

问:点击JS链接后,FF2是否保持锚状态不变?

似乎它不会将链接的状态更改为:visited,除非它指向页面中的元素(这意味着链接指向隐式访问的当前页面)或另一个资源,如已被访问过。

  

问:无需附加onClick处理程序或使用JS修改类/样式,是否有一种简明的方法告诉FF2使用:独立于href是另一个页面还是JS链接的visted样式?

我不这么认为。如果您将链接的href指向“#”并使用onclick处理程序来满足您的JavaScript需求,则可能会获得访问过的效果。

答案 3 :(得分:1)

我遇到过这个问题我相信这个问题。考虑这个简单的例子:

样式表:

#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;
}

虽然不是最漂亮的代码,但它指出了在href中使用javascript时可能会出现的一些问题。你可能想要做这样的事情的原因是创建动态内容更改而不重新加载显示访问样式。 a链接比按钮更方便,因此即使是内部链接也会保持链接的访问状态。但是,我注意到浏览器在内部链接上触发访问状态的一些问题,更不用说使用javascript onclick事件处理程序的内部链接了。按钮需要编写一个函数来控制访问样式。

答案 4 :(得分:0)

我同意Alex,链接应该是某个东西的链接,而不是JS触发器 - 按钮在这里会更有效。

如果你想将一些JS函数附加到链接,你肯定应该使用一些不显眼的JS将该函数附加到click事件。

EG使用jQuery:

$("#myLinkID").click(function () { 
  //function stuff
});