【问题标题】:Find the first link with given tag and open it (userscript)找到给定标签的第一个链接并打开它(用户脚本)
【发布时间】:2016-06-17 09:53:28
【问题描述】:

这似乎是一个简单的问题,但我仍然无法找到解决方法。

我想为一家网店写一个油脂猴用户脚本,当我打开他们的网站时接下来会做什么(基本上是彼此下方的项目列表)。

  • 检查自上次访问以来是否有任何新项目 (在网站的 html 中,他们的班级中会有一个“新”标记) 如果它找到 1 个或多个带有新标签的项目,请转到下一步(否则什么都不做)

  • 将此主页重定向到带有“new”标签的第一个链接

因此,当我打开http://mywebsite.com/ 时,我应该立即重定向到此示例中的http://mywebsite.com/forsale/100009/。 但我不知道 url 是什么,这就是脚本需要检查链接的原因。只有我需要的第一场比赛(新项目总是在最前面)。不是旧的(没有新标签),也不是第一个下面/之后的新项目。

这是网站源代码的外观:

<div class="item new "  id="item_0" style="">
  <div class="item_click_overlay">
    <a href="http://mywebsite.com/forsale/100009/">
    <img src="http://mywebsite.com/pics/100009.gif">
    </a>
  </div>
</div>

<div class="item new "  id="item_1" style="">
  <div class="item_click_overlay">
    <a href="http://mywebsite.com/forsale/100007/">
    <img src="http://mywebsite.com/pics/100007.gif">
    </a>
  </div>
</div>

<div class="item  "  id="item_2" style="">
  <div class="item_click_overlay">
    <a href="http://mywebsite.com/forsale/100006/">
    <img src="http://mywebsite.com/pics/100006.gif">
    </a>
  </div>
</div>

<div class="item  "  id="item_3" style="">
  <div class="item_click_overlay">
    <a href="http://mywebsite.com/forsale/100002/">
    <img src="http://mywebsite.com/pics/100002.gif">
    </a>
  </div>
</div>

【问题讨论】:

  • 您通常希望在代码示例中包含您尝试过的内容。堆栈溢出不是某人为您编写代码的地方。也就是说,我提供了一个基本示例作为答案,因为我认为您的问题对其他人仍然很有价值。
  • 我知道,对此感到抱歉,但我已经尝试了 100 种方法,到处寻找解决方案,但总是出错。我没有保存我的尝试,我认为没有必要复制一些不相关的代码。是的,答案肯定对用户很有价值,就像我说我在其他地方找不到这个一样。谢谢!

标签: javascript href url-redirection userscripts


【解决方案1】:

你的意思是这样的吗?

var newLink = $( ".item.new:first" ).find('a:first').attr('href');
window.location.replace(newLink);

或者这个没有 jQuery:

var newLink = document.getElementsByClassName('item new')[0].getElementsByTagName('a')[0].href;
window.location.replace(newLink);

【讨论】:

  • 非常感谢!底部的工作正常! (如果能更快就完美了,等待的时间比我想象的要长,但恐怕什么都做不了?)再次感谢!
  • 等待是不可避免的,它可能是等到DOM完全加载后再执行你的代码。
【解决方案2】:

稍微缩短了 M.D. 的解决方案,在这里发布,因为这也有效:

document.getElementsByClassName('item new')[0].getElementsByTagName('a')[0].click();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2011-02-14
    相关资源
    最近更新 更多