创建一个什么都不做的HTML链接(几乎没有)

ale*_*ale 71 html css

我想要一个什么都不做的链接.我不想要这个:

<a href="#">

因为那时URL就变成了something.com/whatever/#.

我想要链接的唯一原因是用户可以看到他们可以点击文本.JavaScript被用来执行一些操作,所以我不需要链接去任何地方,但我需要它看起来像一个链接!

我可以使用一些数据属性并告诉我CSS使元素看起来像链接,如果他们有这个属性,但它似乎有点矫枉过正.

Cur*_*urt 114

以下内容将阻止您的href运行

<a href="#" onclick="return false;">
Run Code Online (Sandbox Code Playgroud)

如果您使用的是jQuery,event.preventDefault()可以使用

  • 导致额外的 onclick 事件被取消。 (2认同)
  • 使页面滚动到顶部。 (2认同)
  • @curt Google Chrome 版本 63.0.3239.84(官方版本)(64 位)(或者可能是两周前稍旧的版本) (2认同)

ale*_*ets 74

试试这个:

<a href="javascript:void(0);">link</a>
Run Code Online (Sandbox Code Playgroud)

  • +1但很快问题:`javascript:void`和`javascript:void(0)`之间有区别吗? (3认同)
  • 如果您尝试使用javascript:void(0)而不使用param,您将遇到SyntaxError并且所有脚本都将失败. (3认同)
  • @alexdets`javascript:void()`将是SyntaxError,但是`javascript:void`只返回undefined - 与`void(0)`相同.亚当,据我所知,`void`和`void(0)`在功能上与此用途相同.---编辑:虽然我看到其他评论提示它可能会重新加载页面.. (3认同)
  • 如何大写javaScript/javascript/JavaScript/Javascript是否重要? (3认同)
  • @TechyTimo没有资本化无关紧要,事实上它不应该大写.我已经提交了一个编辑. (2认同)
  • 如果您的应用程序使用阻止内联脚本执行的 [CSP 指令](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy),这会产生警告。此外,最好只编写“javascript:;”,它与您的解决方案具有相同的效果,但需要输入的字符更少。 (2认同)

Ale*_*ara 20

在HTML5中,这非常简单.只需省略href属性即可.

MDN上的标签href属性:

HREF

这是定义超文本源链接的锚点的唯一必需属性,但在HTML5中不再需要.


悬停上的手形光标怎么样?

对于没有的a标签,浏览器的默认样式可能不会将光标更改为指针href.您可以使用以下CSS进行普遍更改.

但是,对它更具选择性可能更好,并且只将它应用于你想要添加事件处理程序的元素.


如何使它可以选择?

只需添加tabindex="0"元素即可.

<a tabindex="0">Do Nothing</a>
Run Code Online (Sandbox Code Playgroud)


使用a没有链接的标签是否有意义?

通常不行,最好使用一个button元素,然后使用CSS来设置它.但是无论你使用什么div,都要尽可能避免使用任意元素,因为这根本不是语义.


Mic*_*ver 15

恰当的:

<a href="#;">Link</a>
Run Code Online (Sandbox Code Playgroud)

  • 是的,“#”被定义为页面顶部,但任何与文档中元素的 ID 或名称不匹配的片段字符串都可以。https://html.spec.whatwg.org/multipage/browsing-the-web.html#find-a-pottial-indicated-element (3认同)
  • 当您想在 Markdown 中指定无操作链接时,这是唯一有效的答案。例如,当您在 GitHub 上有一个项目并且想要在 README.md 中使用 GitHub 徽章时,就像我在这里所做的那样:https://github.com/mikenakis/Bathyscaphe,并且您不希望某些徽章单击时链接到任何内容。所有其他解决方案要么将您带到页面顶部,要么将您带到仅显示徽章的另一个页面。这是唯一真正没有任何作用的解决方案。 (2认同)

Pee*_*Haa 11

不要把它作为一个链接(尽管它更喜欢这样做)并用CSS设置样式,使它看起来像一个链接:

p.not-a-link { text-decoration: underline; cursor: pointer } 
Run Code Online (Sandbox Code Playgroud)

或者更好的只是让它成为一个链接,并让javascript函数用于e.preventDefault()防止链接.

还要添加链接,href以便没有启用JS的用户仍然可以使用它(作为后备).

  • 我更喜欢跨度。P 可以创建一个新行,而 span 则不能 (2认同)

Sco*_*own 9

<a href="javascript:;">Link text</a> - 这就是我经常使用的东西

  • 这不会用某些浏览器重新加载页面吗? (4认同)

Kra*_*der 6

我们可以使用 javascript void 来实现这一点,这通常涉及表达式的求值并返回 undefined,其中包括添加javascript:void(0);href。

\n\n

void 运算符通常仅用于获取未定义的原始值,通常使用 \xe2\x80\x9cvoid(0)\xe2\x80\x9d (相当于 \xe2\x80\x9cvoid 0\xe2\x80\x9d) 。在这些情况下,可以使用全局变量 undefined 来代替(假设它尚未分配给非默认值)。

\n\n

\r\n
\r\n
a {\r\n  text-decoration: initial;\r\n}
Run Code Online (Sandbox Code Playgroud)\r\n
<a href="javascript:void(0);"> This link actually does nothing when clicked</a>
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n