Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как встроить скрипт на страницу вк (https://javascript.ru/forum/events/28745-kak-vstroit-skript-na-stranicu-vk.html)

neWjs 01.06.2012 00:47

как встроить скрипт на страницу вк
 
хочу очистить стену в вк , написал скрипт который будет имитировать нажатие на кнопку удаления , но не знаю как его засунуть и запустить на своей странице

Gvozd 01.06.2012 00:57

F12

frant32 02.06.2012 10:44

http://habrahabr.ru/post/39214/
эт если через лису сидишь)
а в опере проще)) в настройках js браузера укажи путь и всё)

Aetae 02.06.2012 12:24

Самый простой удобный вариант это букмарклет. Делашь закладку с адресом вида
javascript:(function(){ /*твой код, не забывать ';' ибо в одну строчку*/ }())
и на нужной странице просто нажимаешь на закладку - код исполнится. Оч удобно если надо быстро что-то поправить под себя на каком-то левом сайте.


__
До сих пор недоумеваю какого хрена создатили браузеров запретили исполнение javascript: напрямую из строки адреса, оставив только через закладки. Кому он мешал то? Те кто не знали так и не знают. Те кто использовал убогие ссылки вида
<a href="javascript:...">...</a>
продолжают их использовать.(и будут продолжать так как в целях совместимости это запретят нескоро)
Остались только те кто использовал эту возможность для быстрого изменения страницы\тестирования букмарклета. Конечно появились всяческие консоли и прочее, но их надо отдельно запускать, открывать - лишние действия.

melky 02.06.2012 12:34

С букмарклетом могут возникнуть проблемы, если скрипт очень большой. В таком случае его придется подключать динамически.

Делается это так:
(_doc=document).body.appendChild(_doc.createElement("script")).src = "http://путь.ru/к/к/моему/скрипту.js";void 0;


Вводить этот код либо в консоль, либо в букмарклет, как указал Aetae.

neWjs 02.06.2012 14:56

если тупо встроить скрипт и вызвать он не работает , я сделал так

<a href="" onclick="d = document.createElement('script');
d.src='http://cyberua.16mb.com/vk.js';
document.body.appendChild(d);
setTimeout('d()',4000);return false;" >go</a>


и вот сам код очистки если кому интересно
function d(){
console.log("выполняемся=)");
var i,cl, dv,reg,matches,fnc,str,inter;
cl = document.getElementsByClassName("delete_post");
i = cl.length;
reg = /[a-z|0-9]*\..*\(.*\);/ig;
wall.showMore(10);
window.scrollBy(0,9999);
while (i--){
fnc = cl[i].childNodes[1].onclick+"";
matches = fnc.match(reg)[0];
eval(matches);
}
setTimeout(function(){if(cl[0]){d();window.scrollBy(0,9999);wall.showMore(10);}},5000);
}

кстати зачем нужен void 0 (читал про него но так и не понял)

melky 02.06.2012 15:10

Цитата:

Сообщение от neWjs (Сообщение 178228)
если тупо встроить скрипт и вызвать он не работает , я сделал так

Хреново. Скрипт может и не загрузиться за 4 секунды. А не выполняется ничего по причине того, что Вы ничего в скрипте и не делаете, только определяете функцию.
// окрасивил код на jsbeautifier, больше ничего не делал
function d() {
	console.log("выполняемся=)");
	var i, cl, dv, reg, matches, fnc, str, inter;
	cl = document.getElementsByClassName("delete_post");
	i = cl.length;
	reg = /[a-z|0-9]*\..*\(.*\);/ig;
	wall.showMore(10);
	window.scrollBy(0, 9999);
	while (i--) {
		fnc = cl[i].childNodes[1].onclick + "";
		matches = fnc.match(reg)[0];
		eval(matches);
	}
	wall.showMore(10);
	setTimeout(function () {
		if (cl[0]) {
			d();
			window.scrollBy(0, 9999);
			wall.showMore(10);
		}
	}, 5000);
}
// где вызов то ?

Тогда уж надо сразу вызывать функцию - дописать снизу d();, или же попробовать "named function expression" (на английском проще звучит).
(function d() {
	console.log("выполняемся=)");
	var i, cl, dv, reg, matches, fnc, str, inter;
	cl = document.getElementsByClassName("delete_post");
	i = cl.length;
	reg = /[a-z|0-9]*\..*\(.*\);/ig;
	wall.showMore(10);
	window.scrollBy(0, 9999);
	while (i--) {
		fnc = cl[i].childNodes[1].onclick + "";
		matches = fnc.match(reg)[0];
		eval(matches);
	}
	wall.showMore(10);
	setTimeout(function () {
		if (cl[0]) {
			d();
			window.scrollBy(0, 9999);
			wall.showMore(10);
		}
	}, 5000);
})();


Цитата:

Сообщение от neWjs (Сообщение 178228)
кстати зачем нужен void 0 (читал про него но так и не понял)

Если код возвратит значение, то это значение заменит содержимое страницы. Возвращение неопределенного значения ( (function(){})() тоже возвратит undefined) не потянет за собой никаких последствий. Вроде, это сейчас пофиксили, но на всякий случай лучше возвращать undefined из кода.

neWjs 02.06.2012 15:23

Цитата:

Сообщение от melky (Сообщение 178230)
Хреново. Скрипт может и не загрузиться за 4 секунды. А не выполняется ничего по причине того, что Вы ничего в скрипте и не делаете, только определяете функцию.
// окрасивил код на jsbeautifier, больше ничего не делал
function d() {
	console.log("выполняемся=)");
	var i, cl, dv, reg, matches, fnc, str, inter;
	cl = document.getElementsByClassName("delete_post");
	i = cl.length;
	reg = /[a-z|0-9]*\..*\(.*\);/ig;
	wall.showMore(10);
	window.scrollBy(0, 9999);
	while (i--) {
		fnc = cl[i].childNodes[1].onclick + "";
		matches = fnc.match(reg)[0];
		eval(matches);
	}
	wall.showMore(10);
	setTimeout(function () {
		if (cl[0]) {
			d();
			window.scrollBy(0, 9999);
			wall.showMore(10);
		}
	}, 5000);
}
// где вызов то ?

Тогда уж надо сразу вызывать функцию - дописать снизу d();, или же попробовать "named function expression" (на английском проще звучит).
(function d() {
	console.log("выполняемся=)");
	var i, cl, dv, reg, matches, fnc, str, inter;
	cl = document.getElementsByClassName("delete_post");
	i = cl.length;
	reg = /[a-z|0-9]*\..*\(.*\);/ig;
	wall.showMore(10);
	window.scrollBy(0, 9999);
	while (i--) {
		fnc = cl[i].childNodes[1].onclick + "";
		matches = fnc.match(reg)[0];
		eval(matches);
	}
	wall.showMore(10);
	setTimeout(function () {
		if (cl[0]) {
			d();
			window.scrollBy(0, 9999);
			wall.showMore(10);
		}
	}, 5000);
})();



Если код возвратит значение, то это значение заменит содержимое страницы. Возвращение неопределенного значения ( (function(){})() тоже возвратит undefined) не потянет за собой никаких последствий. Вроде, это сейчас пофиксили, но на всякий случай лучше возвращать undefined из кода.

блин а я как то не подумал сделать такую конструкцию function(){})() что бы функцию вызывало после созданий=)

Deff 02.06.2012 17:35

neWjs,
Открываете страницу в Opere, жмете сонтрл+U,
=> http://uploads.ru/i/8/u/Q/8uQd7.png
Вставляете код - жмете - Применить изменения (1.5 секунды максимум

Aetae 02.06.2012 18:52

Цитата:

Сообщение от Deff (Сообщение 178262)
neWjs,
Открываете страницу в Opere, жмете сонтрл+U,
=> http://uploads.ru/i/8/u/Q/8uQd7.png
Вставляете код - жмете - Применить изменения (1.5 секунды максимум

И так каждый раз на протяжении многих лет юзания вконтактика.
Для того и нужны букмарклеты - нажал и готово.
А если действие нужно не периодически а всегда - тогда уж юзерскрипт.
Консоль нужна лишь для единичных случаев.(ну либо по прямому назначению - отладки своего скрипта)

Вообще конечно я прям таки оброс букмарклетами всяческими, половину уж не упомню для чего. Надо почистить закладки.))


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