Скрипт для удаления части img href на сайте - PullRequest
1 голос
/ 02 июня 2019

Я запустил руководство по игре на PrimaGames.com.С текстом все в порядке, но изображения обанкротились.Вот пример:

<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>">  

В конце URL-адреса src вы увидите эту странную строку:
/ PRIMAP / resize / 700x-1>

I'mжелая настроить скрипт (Stylish, Tampermonkey и т. д.), я могу обратиться к PrimaGames.com, чтобы он автоматически удалял ту часть URL-адреса src, которая, в свою очередь, отображает соответствующее изображение.

Ответы [ 4 ]

2 голосов
/ 02 июня 2019

Bookmarklet

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); })})()
1 голос
/ 02 июня 2019

Это довольно стандартная 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);
    }
}
0 голосов
/ 02 июня 2019

Вам просто нужно выполнить приведенный ниже код. Здесь я просто заменяю изображение src на URL изображения, после замены 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://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')}`;
    }
    }());

Это будет работать для вас.

For Удалить только лишние элементы из 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');
    }
}())
0 голосов
/ 02 июня 2019

Вам нужно будет найти индекс, где заканчивается фактическое изображение, и создать подстроку до этого индекса.

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', тогда вы можете использовать решение, указанное выше.

...