使用纯javascript将'target'属性添加到元素

时间:2018-02-21 14:25:20

标签: javascript html

我正在尝试在我的javascript中向target="_blank"元素添加<a>属性,但似乎我的函数以某种方式干扰了元素并且不会添加它。 注意没有target="_blank"工作正常的功能,只有当我添加动画和延迟功能时才会禁用它。

HTML和JS:

var fbId = document.getElementById('fb-id');
fbId.addEventListener('click', function(e) {
  fbId.classList.add("animated", "bounceOut");
  fbId.setAttribute('target', '_blank');
  e.preventDefault();
  var fbLink = fbId.href;
  setTimeout(function(url) {
    window.location = url;
  }, 1000, fbLink);
});
<div class="col-3">
  <a id="fb-id" href="https://www.facebook.com" target="_blank">
    <img class="social-icon" id="fb-icon" src="img/fb.png" alt="facebook">
  </a>
</div>

2 个答案:

答案 0 :(得分:2)

你使用了错误的功能 - 你需要使用:

window.open("http://www.google.at", '_blank');

完整代码:

var fbId = document.getElementById('fb-id');
fbId.addEventListener('click', function(e){
  fbId.classList.add("animated", "bounceOut");
  e.preventDefault();
  var fbLink = fbId.href;
  setTimeout(function(url) { window.open(url, '_blank'); }, 1000, fbLink);
});

查看正在运行的JsFiddle:http://jsfiddle.net/c29u4w7o/43/,它会调整您的代码,以便在新标签页中打开窗口。

答案 1 :(得分:1)

您的延迟不会在链接后延迟

您完全取消了关注链接的行为,然后为location分配新值。

target属性已成功添加,但未使用该属性,因为链接未被跟踪(浏览器通过location分配导航)。

如果您想使用JavaScript在新窗口中导航,请拨打window.open()而不是分配到location