2

在单击带有通用 href 的链接(本地页面或网站)并成功加载 href 后,FF2 和 IE7 都会显示带有 a:visited 样式的链接。

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

问:JS 链接和 :visited 的行为是否被认为是正确的?

Q:FF2点击JS链接后锚点状态不变吗?

问:无需附加 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>
4

5 回答 5

1

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

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

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

于 2009-04-23T00:08:42.510 回答
1

a:hover 必须在 CSS 定义中的 a:link 和 a:visited 之后才能生效!

于 2009-04-30T19:24:48.917 回答
1

这是我的看法:

问:JS 链接和 :visited 的行为是否被认为是正确的?

链接的目的是检索资源。如果您的链接无处可去,您在“访问”什么?在我看来,从这个角度来看,这种行为是正确的。

Q:FF2点击JS链接后锚点状态不变吗?

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

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

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

于 2009-04-30T19:45:17.340 回答
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 onlick 时可能出现的一些问题。您可能想做这样的事情的原因是创建动态内容更改而不重新加载显示访问的样式。a 链接比按钮更方便,因此链接的访问状态保持不变,即使是内部的。但是,我注意到浏览器在内部链接上触发已访问状态的一些问题,更不用说带有 javascript onclick 事件处理程序的内部链接了。一个按钮需要编写一个函数来控制访问的样式。

于 2011-06-16T19:19:45.553 回答
0

我同意亚历克斯的观点,链接应该是指向某物的链接,而不是 JS 触发器——一个按钮在这里会更有效。

如果您确实想将一些 JS 函数附加到链接,则绝对应该使用一些不显眼的 JS 将该函数附加到单击事件。

使用 jQuery 的 EG:

$("#myLinkID").click(function () { 
  //function stuff
});
于 2009-04-23T01:50:08.883 回答