JavaScript与无JavaScript链接和表单

JavaScript vs No JavaScript links and forms

本文关键字:JavaScript 表单 链接 与无      更新时间:2023-09-26

几天前我发布了这个问题:

我最后一个关于ajax链接与普通链接的问题

这是关于让链接为启用JavaScript的浏览器(AJAX)工作,并为非JavaScript浏览器或爬网程序提供正常链接。

现在我发现这种方法对我有效,谷歌也推荐了这种方法。这就是我所做的:

<a href="/some/page.php" onClick="jsfunction():return false">My Link</a>

现在我喜欢的是,它正是我所需要的工作方式。但是,如果我要在jQuery中使用事件处理程序。我会这样做:

 <a href="/some/page.php" id="mylink">My Link</a>
<script>
  $("#mylink").live(''click'', function(){
  my_function();
  }) 
</script>

我想知道当启用JavaScript并且不使用像前面的情况那样返回false的onClick事件时,如何防止我的页面到达目标/some/page.php

我还想知道如何对表格进行同样的处理。当我点击提交按钮并启用JavaScript时,我不希望表单执行该操作。

我正在尝试制作一个可以使用和不使用JavaScript浏览器的网站。唯一的区别是启用JavaScript的浏览器将使用AJAX,而其他浏览器则不使用。

使用preventDefault(),如下所示:

<script>
    $("#mylink").live('click', function(event) {
        event.preventDefault();
        my_function();
    });
</script>

请注意,必须将event作为function的参数,此示例代码才能工作。此外,我不知道你为什么逃脱了'(也许这个代码是由另一个脚本生成的?),但除非你在做一些奇怪的事情,否则你不需要它。


从技术上讲,这部分不是你的答案,但它也很重要:正如评论中所指出的,live()已被弃用。最好的方法是使用事件委派和on(),如下所示:

<script>
    $('body').on('click', '#mylink', function(event) {
        event.preventDefault();
        my_function();
    });
</script>

看起来应该使用方法event.preventDefault()