使用 Javascript 从 ahref 获取 URL

Get URL from ahref using Javascript

提问人:Mehul Kumar 提问时间:3/31/2023 最后编辑:freedomn-mMehul Kumar 更新时间:4/1/2023 访问量:85

问:

<a href="#url" data-mc-cta="1" style="display:none">Link</a>

在上面的这段代码中,广告网络javascript会生成一个随机的URL,放在标签之前a href</head>

我正在尝试使用JS代码获取随机URL值:

var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
var mcLink = maxConvLink.getAttribute("href");
alert(mcLink);  

此代码放在标记之前。问题是上面的JS代码获取值而不是真正的随机URL值。</body>#url

据我所知,Javascript 按顺序工作,因此,首先广告网络 JS 代码会将 url 放置到标签中,然后我的代码将获得值,但它并不像我想象的那样工作。a href

javascript html ajax jquery-selectors

评论

1赞 freedomn-m 3/31/2023
此代码放在 </body> 标记之前 - 您的代码运行得太快。虽然 AD 代码将首先初始化,但它不太可能首先运行,因为它可能会被设置为在“文档就绪”或额外的 ajax 调用之后运行。当你使用 jquery 时,你可以将代码包装在 doc.ready: 中,也可以将其包装在 但你必须根据 AD 代码调整超时值。$(()=> { var maxConvLink... })setTimeout(() => { ... }, 1500)
0赞 Mehul Kumar 3/31/2023
@freedomn-m 文档就绪意味着使用 DOM?
1赞 freedomn-m 3/31/2023
此处解释:learn.jquery.com/using-jquery-core/document-readyapi.jquery.com/ready
1赞 freedomn-m 3/31/2023
这里的问题是:添加代码何时更新 url。您可能需要一个 MutationObserver

答:

1赞 Rajeev 3/31/2023 #1

有不同的方法可以实现输出。选择最适合您需求的一款。

使用 Window.onload

window.onload = function() {
  var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
  var mcLink = maxConvLink.getAttribute("href");
  alert(mcLink);    
}

使用 jQuery 文档就绪功能

$(document).ready(function() {
  var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
  var mcLink = maxConvLink.getAttribute("href");
  alert(mcLink);    
});

为了使用 jQuery 库,您需要包含它

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>

使用 DOMContentLoaded 事件

document.addEventListener("DOMContentLoaded", function() {
  var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
  var mcLink = maxConvLink.getAttribute("href");
  alert(mcLink);
});

使用 setTimeout

setTimeout(function() {
  var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
  var mcLink = maxConvLink.getAttribute("href");
  alert(mcLink);
}, 1000);

使用 setInterval

var intervalId = setInterval(function() {
  var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
  if (maxConvLink) {
    clearInterval(intervalId);
    var mcLink = maxConvLink.getAttribute("href");
    alert(mcLink);
  }
}, 1000);

使用 MutationObserver

var targetNode = document.querySelector('a[data-mc-cta="1"]');

var observer = new MutationObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    if (mutation.type === "attributes" && mutation.attributeName === "href") {
      var maxConvLink = mutation.target;
      var mcLink = maxConvLink.getAttribute("href");
      alert(mcLink);
    }
  });
});

observer.observe(targetNode, {
  attributes: true
});

使用 IntersectionObserver

var targetNode = document.querySelector('a[data-mc-cta="1"]');

var observer = new IntersectionObserver(function(mutations) {
  mutations.forEach(function(mutation) {
    if (mutation.type === "attributes" && mutation.attributeName === "href") {
      var maxConvLink = mutation.target;
      var mcLink = maxConvLink.getAttribute("href");
      alert(mcLink);
    }
  });
});

observer.observe(targetNode, {
  attributes: true
});

使用 window.addEventListener

window.addEventListener("load", function() {
  var maxConvLink = document.querySelector('a[data-mc-cta="1"]');
  var mcLink = maxConvLink.getAttribute("href");
  alert(mcLink);    
});