zoukankan      html  css  js  c++  java
  • a标签href和onclick事件同时写导致的问题

    项目中用到了base标签,然后在下面又写了a标签,每次点过A标签后,都会跳转到base下的路径。后来查明是A标签href和onclick同时用导致的。

    W3C中base标签用法如下:

    定义和用法

    <base> 标签为页面上的所有链接规定默认地址或默认目标。

    通常情况下,浏览器会从当前文档的 URL 中提取相应的元素来填写相对 URL 中的空白。

    使用 <base> 标签可以改变这一点。浏览器随后将不再使用当前文档的 URL,而使用指定的基本 URL 来解析所有的相对 URL。这其中包括 <a>、<img>、<link>、<form> 标签中的 URL。

    实例

    <head>
    <base href="http://www.w3school.com.cn/i/" />
    <base target="_blank" />
    </head>
    
    <body>
    <img src="eg_smile.gif" />
    <a href="http://www.w3school.com.cn">W3School</a>
    </body>


    项目中,用到<a href="#onclick="begin();">首 页</a>,这时,页面执行过begin()函数后又执行href,结果跳转到base+"#"地址。
    解决方法:
    1、onclick事件后面的begin()函数后面加上return false ;
    2、href 属性设为 javascript:void(0);


    链接的 onclick 事件被先执行,其次是 href 属性下的动作(页面跳转,或 javascript 伪链接); 
    假设链接中同时存在 href 与 onclick,如果想让 href 属性下的动作不执行,onclick 必须得到一个 false 的返回值。不信,你可以将 goGoogle 函数中的 return false 注释掉; 
    如果页面过长有滚动条,且希望通过链接的 onclick 事件执行操作。应将它的 href 属性设为 javascript:void(0);,而不要是 #,这可以防止不必要的页面跳动; 
    如果在链接的 href 属性中调用一个有返回值的函数,当前页面的内容将被此函数的返回值代替; 
    在按住Shift键的情况下会有所区别。 
    今天我遇到的问题,在IE6.0里以href的形式访问不到parentNode。 
    尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放
     
  • 相关阅读:
    【转载】八大排序算法
    【转载】算法的时间复杂度和空间复杂度的计算
    【转载】SpringMVC前台给后台传值的方式
    Session方法
    配置《算法 第四版》的Eclipse开发环境
    Learning Scrapy笔记(三)- Scrapy基础
    Learning Scrapy笔记(七)- Scrapy根据Excel文件运行多个爬虫
    Learning Scrapy笔记(六)- Scrapy处理JSON API和AJAX页面
    Scrapy Learning笔记(四)- Scrapy双向爬取
    Learning Scrapy笔记(五)- Scrapy登录网站
  • 原文地址:https://www.cnblogs.com/Mygirl/p/3012867.html
Copyright © 2011-2022 走看看