链接执行 javascript 代码的正确方法

发布于 2024-09-18 18:37:22 字数 727 浏览 7 评论 0原文

我知道有 4 种主要方法可以从链接执行 javascript 代码。对于我的要求,我需要在不将屏幕移动到任何地方的情况下执行此操作(链接到 # 并且不返回 false 是不好的)。如果可能的话,对执行的 javascript 代码进行 SEO 也很重要。那么这样做的正确方法是什么?

方法 1(需要确保 myCode() 始终返回 false):

<a href="#" onclick="return myCode();">execute</a>

方法 2(似乎最有意义?):

<a href="javascript:myCode();">execute</a>

方法 3:

<a href="javascript:void(0);" onclick="myCode();">execute</a>

方法 4(语义上不如我认为的其他方法那么令人愉快):

<span id="executeMyCodeLink" class="link">execute</a>
<script>
$('#executeMyCodeLink').click(myCode);
</script>

使用方法 4,您可以当然也使用 onclick ..

So there are 4 main methods I'm aware of to execute javascript code from a link. For my requirements, I need to do so without moving the screen anywhere (linking to # and not returning false is bad). SEO for the executed javascript code, if possible, is important too. So what's the right way to do this?

method 1 (need to make sure myCode() returns false always):

<a href="#" onclick="return myCode();">execute</a>

method 2 (seems to make the most sense?):

<a href="javascript:myCode();">execute</a>

method 3:

<a href="javascript:void(0);" onclick="myCode();">execute</a>

method 4 (not as pleasant semantically as the others I think):

<span id="executeMyCodeLink" class="link">execute</a>
<script>
$('#executeMyCodeLink').click(myCode);
</script>

with method 4, you can use onclick as well of course..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

屋檐 2024-09-25 18:37:24

我也更喜欢方法4。

将事件单独绑定到 dom 对象是一种更优雅的方式,我认为这是一个很好的编程习惯。

I prefer method 4, too.

Binding events to dom objects seperately is a more elegant way and I think that's a good programming habit.

娇纵 2024-09-25 18:37:24

我也喜欢方法4。只要有可能,我都会尝试不直接在 Even 属性中放入任何内容,或者直接将 js 写入 href 中。我这样做是因为在大多数情况下,我实际上会将非 js url 作为 href,因此对于非 js 启用的浏览器来说,它会降低性能。第二个原因是我不喜欢用垃圾污染元素:-)

I like method 4 as well. Whenever possible i try to not put anything directly in the even attributes or to write js directly into the href. I do this because in most cases ill actually put a non-js url as the href so it degrades for non-js enabled browsers. The second reson is i dont like to pollute elements with cruft :-)

南…巷孤猫 2024-09-25 18:37:23

您使页面不跳转,并使用带有 href 的“a”标签和使用 PreventDefault 的方法 4。

<a id="executeMyCodeLink" href="#">execute</a>
<script>
  $('#executeMyCodeLink').click(function(event) {
    event.preventDefault();
    myCode();
  });
</script>

包含 href 很重要,因为否则链接的样式将无法正确,并且您的 html 将无法验证。

You make the page not jump and use an "a" tag with an href and method 4 using preventDefault.

<a id="executeMyCodeLink" href="#">execute</a>
<script>
  $('#executeMyCodeLink').click(function(event) {
    event.preventDefault();
    myCode();
  });
</script>

It's important to include an href because links won't style properly and your html won't validate otherwise.

春庭雪 2024-09-25 18:37:23

我更喜欢方法 4,但有两个区别:

  • 将脚本移动到单独的文件中。不引人注目的 JavaScript 是快乐的 JavaScript。
  • 使用 a 标签,链接到 # 并返回 false。

I prefer method 4, but with two differences:

  • Move the script to a separate file. Unobtrusive JavaScript is happy JavaScript.
  • Use the a tag, link to # and return false.
百思不得你姐 2024-09-25 18:37:23

也可以,这样您就不需要 return false。 (任何不存在的锚点都可以真正发挥作用)。

另外,方法 4 仅在使用 jQuery 时才有效。我的大多数网站只有一两个小的 javascript 效果,我不会为此加载 jQuery。

<a href="#_"> works too, that way you don't need a return false. (Any non-existent anchor will work really).

Also, method 4 only works if you use jQuery. Most of my websites only have one or two small javascript effects, I'm not loading jQuery for that.

橙幽之幻 2024-09-25 18:37:23

使用 jquery 是处理 JavaScript 调用的一种不显眼的方式。所以我会说方法4。你也可以这样做:

$(a#linkId).click(...);

Using jquery is an unobtrusive way to handle javascript calls. So I would say method 4. You can also just do:

$(a#linkId).click(...);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文