0

由于业务规则和要求,我需要一个可选项卡的元素(不使用 tabindex),看起来像一个链接,只有 javascript 功能(例如,它需要对 Web 服务进行 ajax 调用)并且它不能包含任何特殊字符,例如“#”,因为 URL 末尾会包含该字符,并且会被我们的防火墙阻止,该防火墙由于外部法规而设置得非常严格。此外,href 不能为空,因为我们的网站位于 Sharepoint 内,保持为空意味着您将被重定向到默认登录页面。

我遇到过各种问题,这些问题都包含一些事实和论据,可以使用一个元素而不是另一个元素,但这些问题都没有一个令人满意的答案,即使它甚至有一个明显的答案。例如:

这两个示例并不完全令人满意,因为对于第一个示例,尽管一个答案的投票数很高,但我不确定该答案是否符合上述要求。第二个确实出于同样的原因。

总之,以下哪个选项是首选,同时牢记限制和要求以及语义和 JavaScript 的已知最佳实践?

<a href="javascript:void(0)" class="action"></a>  

或者

<a href="" class="action"></a>

或者

<a href="javascript;" class="action"></a>

或者

<button class="action"></button>

或者

<span class="action"></span>

WITH(示例)ajax调用:

<script>

    $('.action').click(function() {
        $.ajax({
            url: "test.html",
            context: document.body
            })
            .done(function() {
                $(this).addClass("done");
            });
        });
    });

</script>

如前所述,限制不能更改。时期。

4

3 回答 3

3

我记得有一次老师告诉我最好是使用<a>标签,href 应该指向一个可能与 javascript 事件完全相同的页面。因此,如果出于某种原因在浏览器上停用了 javascript,用户仍然可以像使用任何普通网站一样使用该网站……但在论文上效果很好……但很难实施。

如果您在上添加 javascript 代码,href或者onclick您的用户将无法在新选项卡上打开链接(通过使用中间按钮或使用上下文菜单)...我个人讨厌在网站上...应该使用链接“链接”页面..不要在当前页面上进行javascript更改,所以<button>对我来说似乎更具语义......

您还应该考虑搜索引擎优化(也许),因为机器人会尝试跟随您指向索引页面的链接,但它们不会跟随按钮。Seo 是一个灰色区域,但如果机器人有一个最大的链接限制,我不会感到惊讶。如果您的页面有很多仅用于 js 的链接,那么机器人可能无法正确索引您的网站

最后,我宁愿拥有不显眼的 Js,所以我真的尝试将行为与呈现分开。当我看到 html 和 js 在一起时,我觉得很难看

所以我会去:

<button class="action"></button>

在 JS 上有一个事件监听器......嘿......但这只是我 :)

希望这可以帮助

于 2013-06-26T17:16:59.823 回答
1

就个人而言,我喜欢使用<a href="javascript:void(null);">JavaScript 驱动的链接。我知道这太过分了,我知道这javascript:;同样足够,但这是我养成的习惯。

也就是说,如果 JavaScript 有一个非 JavaScript 替代方案(例如,可能会将您带到一个表单的链接,它有 JavaScript 在对话框中弹出该表单),我会使用它作为href并确保防止事件处理程序中的默认操作。

<button>除非您特别希望它看起来像一个按钮,否则这不是一个好主意 - 根据您的网站,这可能是好事也可能是坏事,但通过使用<a>和 CSS,您可以获得更多的自由。

于 2013-06-26T17:01:26.893 回答
0

我认为,带有您想要的任何 href 的“a”标签 + onclick 函数上的 event.preventDefault() 可以为您提供帮助。为什么是'a',因为它有利于设置标签标题的样式,例如

于 2013-06-26T17:01:59.257 回答