提问人:AnghellicKarma 提问时间:6/2/2019 最后编辑:Tyler RoperAnghellicKarma 更新时间:6/2/2019 访问量:1218
用于删除站点上部分 img href 的脚本
Script to remove part of img href on a site
问:
我在 PrimaGames.com 上启动了一个游戏指南。文字都很好,但图像已经破坏了 src。 下面是一个示例:
<img src="/media/files/eguide_assets/final-fantasy-xii-the-zodiac-age-eguide/085-105_walkthrough-web-resources/image/wi01.png/PRIMAP/resize/700x-1>">
在 src URL 的末尾,您会注意到这个奇怪的字符串:
/PRIMAP/resize/700x-1>
我希望设置一个可以应用于 PrimaGames.com 的脚本(Stylish、Tampermonkey 等),以便它自动删除 src URL 的那部分,从而显示关联的图像。
答:
书签?
javascript:(function() { [...document.images].forEach(img => {
const src = img.src.split("/PRIMAP");
if (src.length >=2) img.src=src[0]; })})()
文件扩展名后未知的东西的替代品 - 这里假设你只对png感兴趣
javascript:(function() { [...document.images].forEach(img => {
const end = img.src.lastIndexOf(".png/");
if (end) img.src=img.src.substring(0,end+4); })})()
评论
您需要找到实际图像结束的索引,并创建该索引的子字符串。
function removeTag(image) {
var src = image.src.toString();
var imgFormats = ['jpg', 'jpeg', 'gif', 'png'];
var idx;
imgFormats.forEach(fmt => {
if (src.lastIndexOf(fmt) > -1) {
idx = src.lastIndexOf(fmt) + fmt.length;
}
})
if (typeof idx !== 'undefined') {
image.src = src.substr(0, idx + 1);
}
}
如果您知道每个额外的字符串都以“/PRIMAP”开头,则可以使用上面提供的解决方案。
评论
image.src.toString();
typeof idx !== 'undefined'
if (idx)
这是一个相当标准的重写任务。src
这是一个完整的 Tampermonkey / Violentmonkey 脚本,它应该适用于该站点的静态和动态图像:
// ==UserScript==
// @name _Remove post file junk from image sources
// @match *://primagames.com/*
// @noframes
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// @grant GM.getValue
// ==/UserScript==
// @grant none
//- The @grant directives are needed to restore the proper sandbox.
/* global waitForKeyElements */
waitForKeyElements ("img", fixImgSource);
function fixImgSource (jNode) {
var oldSrc = jNode.attr ("src");
//-- Does the src have junk after the file suffix?
if (/\.(png|jpg|gif)./i.test (oldSrc) ) {
let newSrc = oldSrc.replace (/\.(png|jpg|gif).+$/i, ".$1");
jNode.attr ("src", newSrc);
}
}
评论
你只需要执行下面的代码,这里我只是用图像 url 替换图像 src,替换 src 后
(function(){
var a = document.getElementsByTagName('img');
for(e of a){
let t = e.src;
e.src = t.replace(/(http|https|file:\/\/)?(\/.*\.(?:png|jpg))(.*)/i, '$2');
}
}())
在这里,我正在改变:
/media/files/eguide_assets/final-fantasy-xii-the-zodiac-age-eguide/085-105_walkthrough-web-resources/image/wi01.png/PRIMAP/resize/700x-1%3E
自
/media/files/eguide_assets/final-fantasy-xii-the-zodiac-age-eguide/085-105_walkthrough-web-resources/image/wi01.png
然后url从相对路径获取文件,这就是我使用文件路径的原因,
如果这张图片在你的相对文件夹中,那么你会得到图片,否则你需要添加带有相对路径的基本网址
https://primagames.com/,相对路径均值代码将更改为:
(function(){
var a = document.getElementsByTagName('img');
for(e of a){
let t = e.src;
e.src = `https://primagames.com${t.replace(/(http|https|file:\/\/)?(\/.*\.(?:png|jpg))(.*)/i, '$2')}`;
}
}());
它将为您服务。
对于仅从图像 url 中删除多余的内容,即“/PRIMAP/resize/700x-1%3E”,您可以执行以下代码
(function(){
var a = document.getElementsByTagName('img');
for(e of a){
let t = e.src;
e.src = t.replace(/([\w-]+\.(jpg|png|txt))(.*)/i, '$1');
}
}())
评论