54 / 54 / 40
Регистрация: 22.08.2014
Сообщений: 424
1

Упростить,оптимизация userscript.js

10.02.2016, 16:21. Показов 1025. Ответов 9
Метки нет (Все метки)

Имеется вот такой скрипт :
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
var node = document.getElementById("user_bar");
if (node.parentNode) {
  node.parentNode.removeChild(node);
}
var node = document.getElementsByClassName("tmenu")[0];
if (node.parentNode) {
  node.parentNode.removeChild(node);
}
var node = document.getElementsByClassName("banner")[0];
if (node.parentNode) {
  node.parentNode.removeChild(node);
}
var node = document.getElementsByClassName("banner")[0];
if (node.parentNode) {
  node.parentNode.removeChild(node);
}
var node = document.getElementsByClassName("contentWidgets")[0];
if (node.parentNode) {
  node.parentNode.removeChild(node);
}
var node = document.getElementsByClassName("yandex-search")[0];
if (node.parentNode) {
  node.parentNode.removeChild(node);
}
var h = document.getElementsByTagName('img');
for (var i = h.length -1; i >= 0; i--) {
var elem = h[i];
    elem.src = elem.src.replace("leave","proxy");
}
var h2 = document.getElementsByTagName('a');
for (var i2 = h2.length -1; i2 >= 0; i2--) {
var elem2 = h2[i2];
    elem2.href = elem2.href.replace("leave","proxy");
}
var h3 = document.getElementsByTagName('form');
for (var i3 = h3.length -1; i3 >= 0; i3--) {
var elem3 = h3[i3];
    elem3.action = elem3.action.replace("leave","proxy");
}
var h4 = document.getElementsByTagName('link');
for (var i4 = h4.length -1; i4 >= 0; i4--) {
var elem4 = h4[i4];
    elem4.href = elem4.href.replace("leave","proxy");
}
var h5 = document.getElementsByTagName('base');
for (var i5 = h5.length -1; i5 >= 0; i5--) {
var elem5 = h5[i5];
    elem5.href = elem5.href.replace("leave","proxy");
}
Вопрос,как все это можно максимально упростить ? ну чтобы не повторятся по 5 раз только с разным получением определенных тегов и изменением их свойств ?
Может как то компактнее можно записать это все,так сказать уменьшить количество строк ?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2016, 16:21
Ответы с готовыми решениями:

Не работает userscript
Доброго времени суток! Пытаюсь вникнуть в userscript, подключил Tampermonkey, воткнул туда...

не работает userscript (GreaseMonkey)
Собственно создал вот такой скрипт function func() { alert( 'Привет' ); } setTimeout(func,...

Userscript , найти ошибку)0
Где ошибка ? вот на третьей функции (f) уже не подсвечивается как функция (в редакторах js) ...

Добавление css стиля UserScript
Всем привет! Подскажите пожалуйста как добавить свой css стиль c помощью js на страницу через...

9
22 / 18 / 14
Регистрация: 07.01.2016
Сообщений: 70
10.02.2016, 17:03 2
Цитата Сообщение от madzal Посмотреть сообщение
Может как то компактнее можно записать это все,так сказать уменьшить количество строк ?
В функцию оформи
1
54 / 54 / 40
Регистрация: 22.08.2014
Сообщений: 424
11.02.2016, 14:32  [ТС] 3
можете дать пример ? просто первый раз в js , не хочу особо вникать в него,забивать голову,т.к это только для второстепенной задачи на другом языке программирования,просто нужен вот этот код на js

Добавлено через 21 час 24 минуты
Вопрос не решен,тема актуальна
0
23 / 23 / 11
Регистрация: 28.02.2015
Сообщений: 61
11.02.2016, 15:20 4
Лучший ответ Сообщение было отмечено madzal как решение

Решение

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function remove(el) {
  el.parentNode.removeChild(el);
}
 
var nodesArr = [ '#user_bar', '.tmenu', '.banner', '.contentWidgets', '.yandex-search' ];
var elemsArr = [['img', 'src'], ['a', 'href'], ['form', 'action'], ['link', 'href'], ['base', 'href']];
 
nodesArr.forEach(function(el){
  el = document.querySelector(el);
  if (el.parentNode) remove(el);
});
 
elemsArr.forEach(function(el){
  var elems = document.querySelectorAll(el[0]);
  var attr = el[1];
  elems.forEach(function(item){
    var act = item[attr];
    act = act.replace('leave', 'proxy');
  });
});
Вроде попроще получилось)
1
54 / 54 / 40
Регистрация: 22.08.2014
Сообщений: 424
11.02.2016, 20:51  [ТС] 5
только что заметил что удаление блоков исполняется а вот заменение свойств с leave на proxy почему то не выполняется,в чем может быть проблемма ?
0
23 / 23 / 11
Регистрация: 28.02.2015
Сообщений: 61
11.02.2016, 21:28 6
Да похоже второпях не учел одну деталь. Попробуй так:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function remove(el) {
  el.parentNode.removeChild(el);
}
 
var nodesArr = [ '#user_bar', '.tmenu', '.banner', '.contentWidgets', '.yandex-search' ];
var elemsArr = [['img', 'src'], ['a', 'href'], ['form', 'action'], ['link', 'href'], ['base', 'href']];
 
 
elemsArr.forEach(function(el){
  var elems = document.querySelectorAll(el[0]);
  var attr = el[1];
  elems.forEach(function(item){
    item[attr] = item[attr].replace('leave', 'proxy');
  });
});
0
54 / 54 / 40
Регистрация: 22.08.2014
Сообщений: 424
11.02.2016, 22:44  [ТС] 7
странно,но теперь вообще ничего не выполняется,даже удаление блоков
0
54 / 54 / 40
Регистрация: 22.08.2014
Сообщений: 424
14.02.2016, 15:20  [ТС] 8
тема актуальна
0
Hello Kitty
688 / 561 / 401
Регистрация: 12.02.2016
Сообщений: 1,436
Записей в блоге: 1
14.02.2016, 15:38 9
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var nodesArr = [ '#user_bar', '.tmenu', '.banner', '.contentWidgets', '.yandex-search' ];
var elemsArr = [['img', 'src'], ['a', 'href'], ['form', 'action'], ['link', 'href'], ['base', 'href']];
 
nodesArr.forEach(function(el){
    node = document.querySelector(el);
    if (node.parentNode) {
      node.parentNode.removeChild(node);
    }
});
 
elemsArr.forEach(function(el){
  var elems = document.querySelectorAll(el[0]);
  var attr = el[1];
  elems.forEach(function(item){
    item[attr] = item[attr].replace('leave', 'proxy');
  });
});
0
54 / 54 / 40
Регистрация: 22.08.2014
Сообщений: 424
14.02.2016, 20:57  [ТС] 10
Неработает
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.02.2016, 20:57
Помогаю со студенческими работами здесь

Userscript, обновляющий страницу через рандомное время
Я делаю пользовательский скрипт на Firefox + Greasemonkey. С яваскриптом никогда не сталкивался, но...

чтобы userscript выполнялся после всех скриптов на странице
Доброго дня, форумчане! Пишу userscript для Google Chrome (это такой javascript который...

Возможен ли доступ из userscript к API сайта?
Здравствуйте, форумчане. Дело такое. Есть сайт, на котором есть свой АПИ, который после...

Userscript для удаления/изминения обьектов сайта?
Есть некоторый сайт, в исходном коде я зменяю всё что мне нужно(некоторые обьекты). Нужен...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru