为什么以下javascript在InternetExplorer&Mozilla,但在谷歌chrome中运行良好

Why following javascript is not working in Internet Explorer & Mozilla but works fine in google chrome?

本文关键字:chrome 谷歌 运行 javascript InternetExplorer 为什么 amp Mozilla      更新时间:2023-09-26

我在javascript中获取会话属性,然后在if-else中使用它。假设每当用户的一些锚点标记单击锚点标记时,脚本就会运行。

<a id="someId" href="/someurl" onClick="checkSession(this.id)">Link</a>
<a id="someOtherId" href="/someurl" onClick="checkSession(this.id)">Link2</a>

体内

<script type="text/javascript">
    function checkSomething(clickedId){     
        event.preventDefault();     
        var value= <%=(int) session.getAttribute("key")%>;
        if(value != -1){
            window.location = $('#'+clickedId).attr('href');
        }else {
            alert("Please Select a value first then click on the link.");
            $("#someInput").focus();
        }
    };

</script>

脚本在chrome上完美运行,但在mozilla和IE上失败。在mozilla上,我可以看到锚标记已经与该javascript绑定,但它没有运行。

传入事件而不是ID。此外,您不需要jQuery来获取元素的href。只需使用香草JavaScript:

<a id="someId" href="/someurl" onClick="checkSession(event)">Link</a>   
<a id="someOtherId" href="/someurl" onClick="checkSession(event)">Link2</a>
<script>
    function checkSession(event) {
        event.preventDefault();
        var clickedId = event.target.id;
        var href = event.target.href; 
        // etc
    }
</script>

您也可以:

<a id="someId" href="javascript:checkSession('/someurl')">Link</a>   
<a id="someOtherId" href="javascript:checkSession('/someOtherurl')">Link2</a>
<script>
    function checkSession(url) {
      var value= <%=(int) session.getAttribute("key")%>;
      if(value != -1){
          window.location = url;
      } else {
          alert("Please Select a value first then click on the link.");
          $("#someInput").focus();
      }
    }
</script>