• jQuery与target的迷宫


    昨天,突然接到一个很紧急的任务,一下勿忙起来。心也慌起来。结果出了一个错误,调试多次也未果,google也未果,最后请leader帮忙看一下,顿感有悟。
    具体问题如下:

    页面有若干<a>标签,禁止超链接跳转,使用javascript(jQuery)来控制跳转。我的原代码是这样写的。

    // jQuery
    <script type="text/javascript">
    $(document).ready(function(){
    var left="xszn";
    var top="yhxy";
    var contents=left+"_"+top+".lib";
    $("#pers_content").load("/utility/"+contents);
    $(".uls").find("li a").bind("click", function(){
    var url="/personal.php?left="+$(this).attr('target');
    window.location.href=url;
    });
    $("#topMenus").find("a").bind("click", function(){
    var url="/personal.php?left="+$("#left_root").attr("goal")+"&top="+$(this).attr("target");
    window.location.href=url;
    });
    })
    </script>
    

      

    页面上的标链接如下:

    <a  href="###" target="gwlc">购物流程</a>
    

    粗看下是好似没有问题,但是测试时,点击链接却总是打开两个窗口。

    仔细分析下,问题来了,关键在target上,因为<a>标签中,target本就是一个属性。

    查下w3c,关于<a>标签的target属性有如下阐述:

    「如果在一个 <a> 标签内包含一个 target 属性,浏览器将会载入和显示用这个标签的 href 属性命名的、名称与这个目标吻合的框架或者窗口中的文档。如果这个指定名称或 id 的框架或者窗口不存在,浏览器将打开一个新的窗口,给这个窗口一个指定的标记,然后将新的文档载入那个窗口。从此以后,超链接文档就可以指向这个新的窗口。 」

    因此,上面的代码,在使用js控制window.open(或是window.location.href)来打开目标链接时,<a>本身的target发挥了作用,打开了一个新窗口。症结已找到,对症开方,修改代码中targe为其他名称。

    反思:

    这样的错误,原因,有如下几点:

    编程需要细心与耐心,比之钓鱼的功夫还要深沉,这是一种态度,一种境界。
    基本功要扎实,就像这样的问题,其实与java,c/c++里的变量名不可以使用关键字一样的道理。
    代码是实在的,不会骗人,所以也不要欺骗代码,不要有偏心,虽然<html>简单,甚至只能说是一个脚本,但它也是一种语言,对所有的代码公平视之,引起同等的重视。

    谨以为志。

  • 相关阅读:
    hdu-4638
    一个简单的询问
    CoderForces-617B
    HYSBZ-2002弹飞绵羊
    邻接表
    CoderForces-913-C
    CoderForces-913D
    CoderFocers-620C
    CoderForces-375D
    HDU-6119
  • 原文地址:https://www.cnblogs.com/phplee/p/2574493.html
Copyright © 2020-2023  润新知