2014-11-05 2 views
1

У меня есть этот URL:Greasemonkey скрипт для удаления параметров из URL

http://website.com/wp-content/uploads/2014/11/this-is-an-image_0120(pp_w820_h548).jpg 

Я хочу удалить параметр из URL, чтобы выглядеть следующим образом:

http://website.com/wp-content/uploads/2014/11/this-is-an-image_0120.jpg 

Как можно с Greasemonkey?

var links = document.getElementsByTagName("a"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var elements = links[i]; 
    elements.innerHTML = document.body.innerHTML.replace(/(pp_w820_h548)/gi, ''); 
} 

Я хочу также, чтобы номера ширины и высоты были неизвестными переменными. Иногда изображения являются png, поэтому удаление всего после (и добавление «.jpg» снова до конца не лучшее решение.

Я хотел бы настроить таргетинг на элемент img, а не на a. ., а не ссылку

Также необходимо стр быть там, потому что я только хочу, чтобы удалить на ProPhoto WP блогов

Итак, вот оно:.

var links = document.getElementsByTagName("img"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var images = links[i]; 
    images.src= images.src.replace(/\(pp_w\d+_h\d+\)/gi, ''); 
} 

UPDATE

Сценарий работает только с изображениями, близкими к окну просмотра. Lazyloaded элементы на странице все еще используют плюсовые строки в url.

Возможно ли, что с помощью Greasemonkey для физического изменения HTML, а не только в DOM?

+0

Что касается регулярного выражения: вам нужно сбежать '(' и ')'. цифры записываются как '[0-9] +' Escaping выполняются с помощью обратного слэша ('\') '\ (escape-код parenthese'. – andlrc

+0

@ user1442219 что вы хотите изменить html не только dom? html * это * dom.Это заменяет источники изображений, которые есть с самого начала, правильно? Вы всегда можете добавить тайм-аут в качестве самого простого решения. –

ответ

2
var links = document.getElementsByTagName("a"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var a = links[i]; 
    a.href= a.href.replace(/\(pp_w\d+_h\d+\)/gi, ''); 
} 

Пример: http://jsfiddle.net/houp0qv0/

+0

Извините, я предназначался для таргетинга на элемент img, а не на a. Извините еще раз! – Lanti

1

Если вы действительно не знаете, что будет в скобках (например, если префикс pp_ может измениться), вы можете использовать:

var links = document.getElementsByTagName("img"); 
for(var i = 0, l = links.length; i < l; i++) { 
    var link = links[i]; 
    link.src = link.src.replace(/\(.+\)/gi, ''); 
} 

Или даже:

Смежные вопросы