Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.04.2011, 18:27   #1
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию Юзер скрипт под рутракер

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

Код:
// ==UserScript==
// @name rutracker thanks
// @version 0.01
// @description sometext
// @exclude http://*.rutracker.org/*
// @exclude rutracker.org/*
// ==/UserScript==

function createRequestObject() {
    var request = null;
    try {
        request = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e){}
    if(!request) try {
        request = new ActiveXObject('Microsoft.XMLHTTP');
    } catch (e){}
    if(!request) try {
        request = new XMLHttpRequest();
    } catch (e){}
    return request;
}

thanks(){
    var form = document.forms[4];
    var post_param = "mode=add_thx&"+
            form.childNodes(1).name+"="+form.childNodes(1).value+"&"+
            form.childNodes(2).name+"="+form.childNodes(2).value+;
    var req = createRequestObject();
    req.open('POST', '/forum/thx.php', true);
    req.setRequestHeader("Referer", location.href);
    req.send(post_param);
    req.onreadystatechange = function() {
        if (req.readyState == 4){
            if(req.status == 200){
                if(req.responseText.search('Спасибо за "Спасибо"!'))
                //else
            }
            //else
        }
        //else
    }
}

if(dl_torrent = document.getElementsByClassName("dl-stub dl-link"))
{
    dl_torrent[0].onClick = 'thanks()';
}
ololo-schoolboy вне форума Ответить с цитированием
Старый 30.04.2011, 18:43   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Во-первых,
Код:
thanks(){
Что это? Книжку по JS в руки. Тут должно быть:
Код:
function thanks(){
Во-вторых,
Код:
var form = document.forms[4];
    var post_param = "mode=add_thx&"+
            form.childNodes(1).name+"="+form.childNodes(1).value+"&"+
            form.childNodes(2).name+"="+form.childNodes(2).value+;
Откуда 4? Откуда 1 и 2?
Бегом читать про DOM структуру.
Так, к примеру, можно найти форму:
Код:
var form = document.getElementsByClassName('thx-container')[0].parentNode;
С элементами формы сами разберетесь.

В-третьих, вы сразу переходите по ссылке, так что велика вероятность, что Ajax-запрос не успеет отработать.

В-четвертых, насколько я помню, XMLHttpRequest не передает куки, так что вы не сможете сказать спасибо, ибо незалогинены.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 30.04.2011, 21:20   #3
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

1 про function забыл давно не кодил...
2 насчет form то она имеет только action и method, 1 и 2 это скрытые поля которые хранят номер топика и еще какую-то белеберду
3 должен ajax успеть обработать запрос так как файл является не html страничкой, а торрентом, а значит браузер не будет его сам интерпретировать, а предложит сохранить
4 про куки не помню, но нафиг тогда запретили кросс доменный запросы, как если не из-за куки

зы я понимаю что допускаю тупые ошибки, но firebug молчит, юзер скрипты ни когда не писал так, что хз, как их отлаживать...
ololo-schoolboy вне форума Ответить с цитированием
Старый 30.04.2011, 22:09   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Накидал здесь. Пробуйте:
Код:
function createRequest(params)
{
	var request = new XMLHttpRequest();
	request.open('POST', '/forum/thx.php', true);
	request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	request.setRequestHeader("Content-length", params.length);
	request.setRequestHeader("Connection", "close");	
	request.onreadystatechange = function() 
	{
        if (this.readyState == 4)
		{
            if(this.status == 200)
			{
				if (this.responseText.match(/<div class="mrg_16">(.*)<\/div>/gi))
					alert(RegExp.$1);
            }
        }
    }
	request.send(params);
}
document.getElementsByClassName('dl-stub dl-link')[0].addEventListener("click", 
function()
{
	var form = document.getElementsByClassName('thx-container')[0].parentNode;
	var postdata = '';
	var first = true;
	for (i in form.childNodes) 
	{
		if (form.childNodes[i].name && form.childNodes[i].value) 
		{
			if (first)
			{
				postdata += form.childNodes[i].name+'='+form.childNodes[i].value;
				first = false;
			} else
			postdata += '&'+form.childNodes[i].name+'='+form.childNodes[i].value;
		}
	}
	createRequest(postdata);
}
);
pushl $0x18E3DF6B
call ICQ

Последний раз редактировалось russian-stalker; 30.04.2011 в 22:14.
russian-stalker вне форума Ответить с цитированием
Старый 01.05.2011, 12:49   #5
ololo-schoolboy
Форумчанин
 
Регистрация: 25.12.2010
Сообщений: 247
По умолчанию

чета не работает, обработчик не выполняется, eventbug его вообще не видит(
ololo-schoolboy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт (программа) переноса текста из HTML файла на сайт под joomla sergiksergik Фриланс 0 20.03.2011 17:36
Нужен скрипт под Матлаб ggetbraine Фриланс 0 11.02.2011 08:24
выделение памяти под массив (си скрипт) eduard93 Общие вопросы C/C++ 0 19.12.2010 19:41
Как узнать под каким именем залогинился юзер? =LeonZone= Win Api 12 11.11.2007 16:03