微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在页面加载而不是在链接点击时打开 javascript

如何解决在页面加载而不是在链接点击时打开 javascript

我有一个脚本,可以在单击任何链接时打开弹出窗口。如何更改此设置以在页面加载时打开弹出窗口。下面是脚本。

window.onload = function() {
  var puURL = 'http://www.example.com';
  var puTS = Math.round(+new Date()/1000);
  console.log('T.'+localStorage.puTS+'/'+puTS);
  if (typeof localStorage.puTS == 'undefined' || parseInt(localStorage.puTS) <= (puTS - 180)) {
    var links = document.getElementsByTagName('a');
    for(var i = 0,len = links.length; i < len; i++) {
      links[i].onclick = function (e) {
        var puHref = this.getAttribute("href");
          var puTarget = this.getAttribute("target");
          if (puHref !== '#' && puHref !== 'javascript:void(0)') {
          e.preventDefault();    
          if (puTarget == '_blank') {
            window.open(window.location.href);
          }
          window.open(puHref);
          window.location.href = puURL;
          localStorage.puTS = puTS;
        }
      }
    }
  }
};

解决方法

好吧,目前您正在为所有目标元素添加点击处理程序:

for(var i = 0,len = links.length; i < len; i++) {
  links[i].onclick = function (e) { // <--- here
    var puHref = this.getAttribute("href");
    var puTarget = this.getAttribute("target");
    if (puHref !== '#' && puHref !== 'javascript:void(0)') {
      e.preventDefault();    
      if (puTarget == '_blank') {
        window.open(window.location.href);
      }
      window.open(puHref);
      window.location.href = puURL;
      localStorage.puTS = puTS;
    }
  }
}

如果您不想添加点击处理程序,而只想立即调用其中的逻辑,只需将该逻辑放入循环中,而无需点击处理程序:

for(var i = 0,len = links.length; i < len; i++) {
  var puHref = this.getAttribute("href");
  var puTarget = this.getAttribute("target");
  if (puHref !== '#' && puHref !== 'javascript:void(0)') {
    if (puTarget == '_blank') {
      window.open(window.location.href);
    }
    window.open(puHref);
    window.location.href = puURL;
    localStorage.puTS = puTS;
  }
}

当然,如果此逻辑包括打开新页面或重定向用户,那么这将在页面加载时立即发生...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。