单击链接时,将Tampermonkey更改为href会还原

时间:2018-09-23 12:18:03

标签: javascript jquery userscripts tampermonkey

我想使用Tampermonkey更改ID为“ apple”的元素中的href

我的代码有效,它将href更改为www.google.com。但是,当我单击链接时,它将带我到旧网站www.somewebsite.com

我不知道为什么会这样。 Tampermonkey可以延迟我的脚本运行吗?好像浏览器已经缓存了旧的href,因此,尽管jQuery脚本更改了href,但是单击该按钮时,它会将您重定向到旧的网站吗?

<div>
<a id="apple" href="www.somewebsite.com">click to visit my website<a/>
</div>

var GMnode,GMelID;
  GMelID="nav-questions";
  GMnode=document.getElementById("apple");
  if((GMnode!==null)&&(GMnode.hasAttribute("href"))){
    GMnode.setAttribute("href","http://www.google.com/");
  }

// ==UserScript==
// @name         Apple
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  testing!
// @author       You
// @match        *://*/*
// @run-at       document-end
// @require      https://code.jquery.com/jquery-3.3.1.min.js
// @grant        none
// ==/UserScript==

1 个答案:

答案 0 :(得分:1)

问题需要MCVE或指向实际页面的链接。

由于尚无法提供所需的示例,所以我们无法确定发生了什么,但是页面使用多种技术来掩盖或重写链接。他们这样做是出于恶意或广告目的(但我要重复一遍)。

因此,您的脚本失败或者是因为它触发得太早,或者是因为页面在您单击链接时就重写了链接。

  1. 将鼠标悬停在链接上时,它显示scrollTop还是www.google.com
  2. 如果在页面上未启用javascript的情况下加载页面,会发生什么情况?

无论如何,有时可行的一种方法是忽略链接并创建自己的链接,就像这样:

www.somewebsite.com

但是有些页面很难编写脚本。 提供一个您所看到的有效示例。