href表达式<;a href=";javascript:&引用&燃气轮机</a>;做

href表达式<;a href=";javascript:&引用&燃气轮机</a>;做,javascript,Javascript,我经常在网页中看到以下href。然而,我不明白这是想做什么或技术。有人能详细说明一下吗 <a href="javascript:;"></a> 这是一种使链接在单击时完全不起任何作用的方法(除非绑定了Javascript事件) 这是一种运行Javascript的方式,而不是通过以下链接: <a href="Javascript: doStuff();">link</a> 当没有实际运行的javascript时(如您的示例),它什么也不做。

我经常在网页中看到以下href。然而,我不明白这是想做什么或技术。有人能详细说明一下吗

<a href="javascript:;"></a>

这是一种使链接在单击时完全不起任何作用的方法(除非绑定了Javascript事件)

这是一种运行Javascript的方式,而不是通过以下链接:

<a href="Javascript: doStuff();">link</a>

当没有实际运行的javascript时(如您的示例),它什么也不做。


<a href="javascript:void(0);"></a>
javascript:
告诉浏览器将要编写javascript代码


<a href="javascript:alert('Hello');"></a>
只是以下的简写:

<a href="" onclick="alert('Hello'); return false;"></a>

基本上不用链接来移动页面(或锚定),而是使用此方法启动javascript函数


函数doSomething(){
警报(“你好”)
}
单击链接将触发警报。

元素是无效的HTML,除非它具有
href
name
属性

如果您希望它正确呈现为链接(即带下划线、指针等),则它只有在具有
href
属性时才会这样做

因此,这样的代码有时用作创建链接的方式,但不必在href属性中提供实际的URL。开发人员显然希望链接本身不做任何事情,这是他知道的最简单的方法

他可能在其他地方有一些javascript事件代码,这些代码在点击链接时被触发,这将是他希望实际发生的事情,但他希望它看起来像一个普通的
标记链接

有些开发人员出于同样的目的使用
href='#'
,但这会导致浏览器跳转到页面顶部,而这可能是不需要的。他不能简单地将href留空,因为
href='
是指向当前页面的链接(即它会导致页面刷新)


这些事情是有办法解决的。在
href
中使用空的Javascript代码是其中之一,虽然这不是最好的解决方案,但确实有效。

有几种机制可以避免链接到达其目的地。这个问题的答案不太直观

一个更简洁的选项是使用
href=“#no”
,其中
#no
是文档中未定义的锚点

您可以使用更具语义的名称,如#disable或#action,以提高可读性

该方法的好处:

  • 避免空href=“#”的“移动到顶部”效果
  • 避免使用javascript
缺点:

  • 必须确保文档中未使用锚定名称
  • URL将更改为包含(不存在的)锚定为片段,并创建新的浏览器历史记录条目。这意味着,单击链接后单击“后退”按钮将不会按预期进行操作
由于
元素不充当链接,因此在这些情况下,最好的选择不是使用
元素,而是使用
,并提供所需的类似链接的样式。

请参阅:

<a href="Http://WWW.stackoverflow.com">Link to the website opened in different tab</a>
<a href="#MyDive">Link to the div in the page(look at the chaneged url)</a>
<a href="javascript:;">Nothing happens if there is no javaScript to render</a>

旧线程,但我想我只是补充一下,开发人员使用此结构的原因不是创建死链接,而是因为javascript URL由于某些原因无法正确传递对活动html元素的引用

e、 g.
handler\u函数(this.id)
用作
onClick
,但不作为javascript URL


因此,您可以选择编写学究式的符合标准的代码(需要手动调整每个超链接的调用),或者编写一次就可以在任何地方使用的稍微非标准的代码。

始终正确呈现链接的最佳方法是使用css,如下所示:

a {cursor: pointer !important}

应该避免遵循线程中提到的不必要的东西。

它用于在
href
中编写js代码,而不是像
onclick
这样的事件侦听器,并避免
href
中的
链接,以使
a
标记对HTML有效

有趣的事实 我对如何在
href
属性中使用
javascript:
进行了研究,得到的结果是我可以在其中写入多行

<a href="
     javascript:
        a = 4;
        console.log(a++); 
        a += 2; 
        console.log(a++); 
        if(a < 6){ 
            console.log('a is lower than 6');
        } 
        else 
            console.log('a is greater than 6');
        function log(s){
            console.log(s);
        }
        log('function implementation working too');

">Click here</a>

  • 在chrome版本68.0.3440.106(官方版本)中测试(64位)

  • 在Firefox Quantum 61.0.1(64位)中测试


由于这是一个样式问题,您可以/应该使用W3-valid解决方法,而不是用无效的语法来争论HTML:

  • 正确格式化HTML,不带
    href
    ,遵循
  • 使用CSS修复在控件上应用可单击UX效果的初始目标
  • 这里有一个让你尝试UX的方法

    HTML

    <a role="button" aria-pressed="false">Underlined + Pointer</a>
    <a role="button" aria-pressed="false" class="btn">Pointer</a>
    
    1。使用该java脚本清除HTML行或使用设置为span的id删除行,并使用JQuery将函数设置为该span的click事件。
    2.动态地将div html设置为字符串变量,并将{id}替换为较大div表和行的1或2等单元格
    //JQuery-清除行
    $(“#clearRow”+idNum)。单击(函数(){
    $(“someIDOrWildcardSelector”+idNum).val(“”);
    $(“someIDOrWildcardSelector”+idNum).val(“”);
    $(“someIDOrWildcardSelector”+idNum).val(“”);
    });
    //JQuery删除/删除html行
    $(“#删除行”+idNum)。单击(函数(){
    //根据父级/子级的级别,使用1到多个。parent().parent().parent()
    $(this.parent().remove();
    });
    
    如果我没弄错的话,你可以用这个调用JS方法。。javascript:SomeFunction()它不会尝试做任何不能用适当的点击处理程序更好地处理的事情。您应该避免这种情况,因为它丑陋、不可访问,并导致人们在不应该使用它的地方使用
    javascript:
    方案
    <a role="button" aria-pressed="false">Underlined + Pointer</a>
    <a role="button" aria-pressed="false" class="btn">Pointer</a>
    
    a[role="button"]:not([href]):not(.btn) { text-decoration: underline; }
    a[role="button"]:not([href]) { cursor: pointer; }
    
        1. Use that java script to Clear an HTML row Or Delete a row using the id set to a span and use JQuery to set a function to that span's click event.
        2. Dynamically set the div html to a string variable and replace {id} with a 1 or 2 etc. cell of a larger div table and rows
    
    <div class="table-cell">
        <span id="clearRow{id}">
            <a href="javascript:" style-"color:#c32029; align:right; font-size:8pt;">Clear</a>
        </span>
    </div>
    
    <div class="table-cell">
       <span id="deleteRow{id}">
           <a href="javascript:" style-"color:#c32029; align:right; font-size:8pt;">Delete</a>
       </span>
    </div>
    
    //JQuery - Clear row
    $("#clearRow" + idNum).click(function(){
        $("someIDOrWildcardSelector" + idNum).val("");
        $("someIDOrWildcardSelector" + idNum).val("");
        $("someIDOrWildcardSelector" + idNum).val("");
    });
    
    //JQuery to remove / delete an html row
    $("#deleteRow" + idNum).click(function(){
        //depending upon levels of parent / child use 1 to many .parent().parent().parent()
        $(this).parent().remove();
    });