1

我在 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>

我正在寻找一个脚本(Stylish、Tampermonkey 等),我可以将其应用于 PrimaGames.com,以便它自动删除 src URL 的该部分,从而显示相关的图像。

4

4 回答 4

2

书签?

javascript:(function() { [...document.images].forEach(img => { 
  const src = img.src.split("/PRIMAP"); 
  if (src.length >=2) img.src=src[0]; })})()

文件扩展名后未知内容的替代品 - 假设您只对 pngs 感兴趣

javascript:(function() { [...document.images].forEach(img => { 
  const end = img.src.lastIndexOf(".png/");
  if (end) img.src=img.src.substring(0,end+4); })})()
于 2019-06-02T05:26:01.160 回答
1

这是一个相当标准的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);
    }
}
于 2019-06-02T05:51:34.617 回答
0

你只需要执行下面的代码,这里我只是用图片 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 从相对路径中获取文件,这就是我使用文件路径的原因,

如果此图像在您的相对文件夹中,那么您将获得图像,否则您需要添加带有相对路径的基本 url

作为https://primgames.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');
    }
}())
于 2019-06-02T07:55:49.703 回答
0

您将需要找到实际图像结束的索引并创建一个直到该索引的子字符串。

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”开头,那么您可以使用上面提供的解决方案。

于 2019-06-02T05:33:16.830 回答