如何去掉某歌镜像搜索结果中的网址前缀?
补充:在 Github 上查到站点建站的源码出处:jsproxy
进去看了一下,之所以你写的脚本没有成功有以下几个原因
- 该网站会拦截
a
标签的点击事件,你仅仅改它的href
没有用。 - 该网站重写了
window.open
方法,不管你跳什么地址都会给你加上它的地址,可以用GM_openInTab
代替。
解决思路:
既然它拦截 a
标签的跳转,索性我们就直接把 a
标签直接改为其他标签,自己搞一个点击动作跳转。由于 window.open
被重写,我们就用 tampermonkey
提供给我们的GM_openInTab
这个方法调整即可。
// ==UserScript==
// @name New Userscript
// @namespace http://tampermonkey.net/
// @version 0.1
// @description try to take over the world!
// @author You
// @require https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @match *://js.dlolb.ml/*
// @grant GM_addStyle
// @grant GM_openInTab
// ==/UserScript==
GM_addStyle(`
.span-a:hover, .span-a:hover h3 {
text-decoration: underline;
}
.span-a {
cursor: pointer;
color: #1a0dab;
}
`);
(function($) {
'use strict';
// 需要替换的a标签选择器
const aSelector = '#search a';
// 替换标签
$(document).on('mouseenter', aSelector, function(e) {
if($(this).attr('href').indexOf('https://www.google.com') === 0) {
return;
}
$(this).replaceWith(function() {
return $('<span />', {
class: ($(this).attr('class') || '') + ' span-a',
html: this.innerHTML,
href: $(this).attr('href').replace('https://js.dlolb.ml/-----', ''),
});
});
});
// 替换后标签点击新窗口打开
$(document).on('click', '.span-a', function(e) {
GM_openInTab($(this).attr('href'), {
active: true,
insert: true,
setParent: true,
});
});
})(window.jQuery);
非常感谢@ekoooo! 脚本有效,简明好懂,(゜- ゜)つロ
根据 ekoooo 的 上述提示 (实际应该说是指导),自己可以很轻易的在原链接旁加上一个“直达”链接,很方便! 再次超级感谢! @ekoooo
因网络原因,重复评论,竟然无法删除 ......
脚本1看着没有任何问题。 一般脚本不起作用就是执行时机不对。 我们查看页面结构的时候 要看浏览器的开发者工具里的源码 不能看右键查看源文件 打开后的源码
解决方案:把你要执行的脚本放在一个定时器里,延迟几秒执行 ,一般都能解决问题。
如何去掉某歌镜像搜索结果中的网址前缀?
本人纯 javascript 小白,不过平常有问题都会先搜索、也愿意折腾,是Greasy Fork 的多年用户,感谢开发者们的无私奉献! 这是第一次提问,需求很简单,所以没从头啃 JS 基础,求高人指点一二。
场景:平常会用到各种某歌搜索镜像,但有些镜像的搜索结果会全部走代理(页面内的所有链接前会添加上该镜像的域名地址) 目标:我想实现点击结果链接时不走代理,即打开搜索结果的真实地址 环境:
Chrome v78.0.3904.70
+Tampermonkey v4.8.41
例子:这是一个某歌镜像如果搜索内容
xxx
,点击其中一个结果,打开的新标签页地址:https://js.dlolb.ml/-----https://www.ixxx.com/
。 而我实际想要打开的是:https://www.ixxx.com/
尝试1(纯javascript):
尝试2(jQuery):
尝试1和尝试2我都是参照网上的脚本进行的修改。 在 Chrome 的 Console 中尝试1只会返回最后一个搜索结果(即第10个)的真实链接; 尝试2如果把搜索结果整个页面的 html 放到 https://jsfiddle.net/ 中,则可以成功替换。
问题:如果导入 Tampermonkey,以上尝试均不起任何作用,即没有替换任何内容(似乎无法在镜像的域名前缀生成后再进行替换),我不太懂里面的内在机制,所以肯请大佬指点一下,或者提示一下用什么英文关键词进行检索? 谢谢:-)