适应场景:假如移动端拨打电话,需要给a标签添加href属性,但是由于需求,需要链接跳转的同时给a标签添加onclick事件,如果不做任何处理的话,默认执行点击事件,而不会跳转href属性的链接。

怎么解决:重写a标签的href属性和onclick事件

//这段代码可放入点击事件里

(function(){

this.fnCancel();
var _event_list = {};
// 找到页面上所有的a标签
var links = document.getElementsByTagName("a")[0];
// 保存click属性的值
var _click = links.getAttribute("onclick");
// 保存href属性的值
var _href = links.getAttribute("href");
if (_click != null) {
// 给onclick属性重新设值
links.setAttribute("onclick", "eval_a_click_event('a')");
}
if (_href != null) {
// 给href属性重新设值
links.setAttribute("href", "javascript:eval_a_href_event('a')");
}
_event_list["a"] = [links, _href, _click];

})()

function eval_a_href_event(id) {
var link = _event_list[id];
if (link != null && link[1] != null) {
// 拿到href属性的值
alert(link[1]);
// 将href属性值重新赋回原来的值
link[0].setAttribute("href", link[1]);
// 移除单击事件
link[0].removeAttribute("onclick");
// 模拟单击事件
link[0][0].click();
// 重写href属性的值
link[0].setAttribute("href", "javascript:eval_a_href_event('" + id + "')");
// 如果有单击事件,重新加上
if (link[2] != null) {
link[0].setAttribute("onclick", link[2]);
}
}
}
function eval_a_click_event(id) {
var link = _event_list[id];
if (link != null && link[2] != null) {
// 拿到单击事件的方法
alert(link[2]);
// 执行单击事件
eval(link[2]);
}
}

js 重写a标签的href属性和onclick事件的更多相关文章

  1. <a>标签href属性与onclick事件

    a标签主要用来实现页面跳转,可以通过href属性实现,也可以在onclick事件里实现. <a onclick="window.location.href='www.cnblogs.c ...

  2. javascrip标签的href属性

    1.标签的href属性用于指定超链接目标的URL.href属性的值可以是任何有效文档的相对或绝对URL,包括片段ID和javascript代码段. 2.javascript:这是一个虚假的协议.所谓的 ...

  3. a标签的href属性拼接问题

    <a id="nickName" href="/community/user/userinfo?nickName="></a> 如上所示 ...

  4. 踩坑系列《四》a标签的href属性拼接问题

    如上所示,无法直接在 html里面的 a 标签的href属性传递参数时,只需要在 JS 中获取对应 a 标签的id,再通过 attr 方法抓到 href,进行字符串拼接即可

  5. <a>标签的href属性

    <a> 标签的 href 属性用于指定超链接目标的 URL. 语法 <a href="value"> 属性值 值 描述 URL 超链接的 URL.可能的值: ...

  6. 【27前端】base标签带有href属性会让chrome里的svg元素url失效

    一个chrome的问题,但具体原因不明. 触发条件:chrome浏览器base标签里href属性有值的时候 触发问题:svg里面的元素如果有用url的滤镜和模糊,则会失效,在firefox里和IE10 ...

  7. a标签中href属性引起的页面不跳转问题

    先简单描述问题,今天在做一个简单的提交页面的时候,碰到了跳转不了的问题.其中a标签的形式<a href="" onclick="submit()"> ...

  8. HTML5 超链接:a标签的href 属性

    H5中a标签的 href 属性用于指定超链接目标的 URL,这里主要给大家介绍一下 href 属性的定义和用法以及应用实例. 定义和用法: <a> 标签的 href 属性用于指定超链接目标 ...

  9. <a>标签缺少href 属性,鼠标经过不会出现手型

    声明: web小白的笔记,欢迎大神指点.联系QQ:1522025433. 直接看实例吧! <!doctype html> <html> <head> <met ...

随机推荐

  1. 服务网关Spring Cloud Zuul

    Spring Cloud Zuul 开发环境 idea 2019.1.2 jdk1.8.0_201 Spring Boot 2.1.9.RELEASE Spring Cloud Greenwich S ...

  2. Dubbo和Zookerper的关系

    1.Dubbo的作用 Dubbo是管理中间层的工具,在业务层到数据仓库间有非常多服务的接入和服务提供者需要调度,dubbo提供一个框架解决这个问题.Dubbo基于RPC(Remote Procedur ...

  3. ionic3 浏览器端返回

    首屏component.ts文件中使用setupBrowserBackButtonBehavior() { // Register browser back button action(s) wind ...

  4. linux 基本操作积累

    1 sed 命令,替换含有指定字符的一整行数据 sed -i 's/原字符串/替换后的字符串/g' ./文件名 (此命令会全局替换[整个文件内替换]原字符串) sed -i.bak 's/原字符串/替 ...

  5. [ERROR ImagePull]: failed to pull image [k8s.gcr.io/kube-apiserver-amd64:v1.11.1]: exit status 1

    问题描述 [root@localhost ~]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 ...

  6. webshell环境下信息收集备忘录

    重视信息收集.再次复习下基础且重要的命令,特别是wmic的使用 Whoami /all Ipconfig /all Route print tasklist /svc Query uer quser ...

  7. prototype与 _proto__的关系

    prototype与 __ proto__ 都是在这个过程中催生的产物,我们一会儿马上讨论,在这之...做对象即可,那javascript种究竟是通过什么来明确继承关系的呢. 一.构造函数: 构造函数 ...

  8. libevent::事件::定时器2

    #define evtimer_new(b, cb, arg) event_new((b), -1, 0, (cb), (arg)) #include <cstdio> #include ...

  9. JavaScript 实用技巧

    1数组中删除重复 let arr = [1,2,4,3,6,4] Array.from(new Set(arr)) // es6中 .from()[1,2,4,3,6] [...new Set(arr ...

  10. e.target与事件委托简例(原生和jQuery的区别)

    target定义(英译:目标,目的): target 事件属性可返回事件的目标节点(触发该事件的节点),如生成事件的元素.文档或窗口. 语法: event.target event.target.no ...