Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменение JS на странице браузера. (https://javascript.ru/forum/misc/79079-izmenenie-js-na-stranice-brauzera.html)

Артист 14.12.2019 11:51

Изменение JS на странице браузера.
 
Пишу расширение для гугл хром, для одного сайта.
Необходимо заменить код в теге <script></script>.

Всё это сделал, единственное оно не работает. :lol:
Т.е. код меняется, но выполняется тот который был.

Мб нужно обновить как-то выполнение страницы?

Артист 14.12.2019 13:26

Код, подключаемый к странице(просто меняет раскладку при вводе в input):

var scripts = document.querySelectorAll("script")
		
for(var i = 0, j = scripts.length; i < j; i++)
{
	var h = scripts[i].innerHTML
			
	if(h.indexOf('change_tr') > -1)
	{
		scripts[i].innerHTML = `function change_tr()
		{
			var r = "йцукенгшщзфывапролдячсмитьЙЦУКЕНГШЩЗФЫВАПРОЛДЯЧСМИТЬ";
			var e = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
			var u = "йцукенгшщзфівапролдячсмитьЙЦУКЕНГШЩЗФІВАПРОЛДЯЧСМИТЬ"

			var s = document.getElementById("code").value;
			var l = s.length;

			if(l > 5) alert('<jkmit 5!') // Моя правка............................................

			var i = 0;
			var j = 0;
			var c = "";

			for(i < 0; i < l; i++)
			{
				c = s.substr(i, 1);
				j = r.indexOf(c);

				if(j >= 0) s = s.substr(0, i) + e.substr(j, 1) + s.substr(i + 1, l);
				else
				{
					j = u.indexOf(c);
					if(j >= 0) s = s.substr(0, i) + e.substr(j, 1) + s.substr(i + 1, l);
				}
			}
			document.getElementById("code").value = s;
		}`
	}
}


Потом я открываю просмотр кода на странице, и вижу, что всё изменилось, однако при вводе в input более 5 символов сообщение не выскакивает.

Артист 14.12.2019 13:52

Попробовал так:
scripts[i].replaceWith(`<script>function change_tr()
				{
					var r = "йцукенгшщзфывапролдячсмитьЙЦУКЕНГШЩЗФЫВАПРОЛДЯЧСМИТЬ";
					var e = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM";
					var u = "йцукенгшщзфівапролдячсмитьЙЦУКЕНГШЩЗФІВАПРОЛДЯЧСМИТЬ"

					var s = document.getElementById("code").value;
					var l = s.length;

					if(l > 5) alert('<jkmit 5!')

					var i = 0;
					var j = 0;
					var c = "";

					for(i < 0; i < l; i++)
					{
						c = s.substr(i, 1);
						j = r.indexOf(c);

						if(j >= 0) s = s.substr(0, i) + e.substr(j, 1) + s.substr(i + 1, l);
						else
						{
							j = u.indexOf(c);
							if(j >= 0) s = s.substr(0, i) + e.substr(j, 1) + s.substr(i + 1, l);
						}
					}
					document.getElementById("code").value = s;
				}</script>`)

Как текст вставилось.

рони 14.12.2019 14:26

Артист,
создайте новый скрипт с нужным содержимым.
var script= document.createElement('script');
 script.type= "text/javascript";
 script.text= `тут ваш код`;
 document.body.appendChild(script);

Артист 14.12.2019 17:16

Всё получилось, спасибо. )

var e = scripts[i].parentElement
scripts[i].remove()
				
var script= document.createElement('script');
script.type= "text/javascript";
script.text= `скрипт`;
e.append(script);


Часовой пояс GMT +3, время: 03:56.