LINUX.ORG.RU
ФорумTalks

[lor] помогите со скриптом для greasemonkey

 


0

0

я тут начал было приделывать к ЛОР'у скриптик чтобы ajax'ом форму ответа приделывать прямо под пост, ну и получилось что-то следующее:

http://uvw.ru/Lor.user.js

однако не могу победить одно обстоятельство: форма работает ровно один раз при первом использовании, а далее ошибок (кроме стандартных, лоровских, которые есть и без этого скрипта) в скрипте не выводится, однако форма не сабмитится

смотрю firebug'ом вставленную форму, она один в один такая же как и в первом случае, однако не работает. и вот сижу читаю доки не могу понять в чем дело.

как говорится ЧЯДНТ?

★★★

кстати, можешь сделать так, что бы анонимусам было видно аватары прямо в тредах?

anonymous
()

то есть лоад формы и вставка ее в нужное место работает, а проблема только с сабмитом

так браузеры ведут себя когда просто кнопку поставить без тегов <form>

xargs ★★★
() автор топика

да, можно наверное

xargs ★★★
() автор топика

еуые

xargs ★★★
() автор топика

У меня так встаяляется форма (text -- страница add-comment.jsp)

// extract FORM from the page << [Ответить] >>
// and display it below the message
function get_form(text) {
	var div = document.createElement("div");
	div.innerHTML = text;
	var form = $xFirst(".//form", div);
	var myspan = $("myspan");
	myspan.appendChild(form);

	toDelete($x(".//div[@class='messages'] | .//font", myspan))

	$form("title" ).size  = 80;
	$form("msg"   ).rows  = 10;
	$form("mode"  ).value = "ntobr";

	var inputs = $x(".//input[last()-1 ]", myspan);
	var submit = inputs.snapshotItem(inputs.snapshotLength-1)
	submit.type="button";
	submit.id = "submit";
	submit.addEventListener(
			'click',
			function(evt) {
			Submit(evt.currentTarget);
			return false;
			},
			false
			);
}


А это отправка

function Submit(ev) {
	var form = ev.parentNode;

	var replyto = "";
	if ($form("replyto" )) {
		replyto = "&replyto="  + $form("replyto" ).value;
	}

	var j_captcha_response = "";
	if ($form("j_captcha_response")) {
		j_captcha_response = "&j_captcha_response=" + $form("j_captcha_response").value;
	}
	var nick = "";
	if ($form("nick")) {
		nick = "&nick=" + $form("nick").value;
	}
	var password = "";
	if ($form("password")) {
		password = "&password=" + $form("password").value;
	}

	var poststr = 	
		"session="   + $form("session" ).value +
		"&topic="    + $form("topic"   ).value +
		"&mode="     + $form("mode"    ).value +
		"&autourl="  + $form("autourl" ).value +
		"&texttype=" + $form("texttype").value +
		"&title="    + encodeURIComponent($form("title").value) +
		"&msg="      + encodeURIComponent($form("msg"  ).value) +
		replyto 	 + j_captcha_response + nick + password;

	makePOSTRequest(form.action, poststr);
}

Функция $form


// return value of the named field from the FORM
// var n -- FORM number at the html page
function $form(name,n){
	n = n || 0;
	return document.forms[n].elements.namedItem(name);
}

sdio ★★★★★
()
Ответ на: комментарий от sdio

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

я вроде разобрался

тут местами цитируемое сообщение выводится в диве 'message' местами в 'msg' а местами еще не поймал

xargs ★★★
() автор топика
Ответ на: комментарий от anonymous

а под оперой разве есть greasemonkey? честно говоря у меня нет оперы :(

я думаю что там если не работает то это потому что используется класс XMLHttpRequest, который в IE называется по другому, а в опере как он называется мне совсем неведомо, если кто поправит буду рад :)

PS: попробуй вместо строки

new XMLHttpRequest();

написать строку:

new ActiveXObject('Msxml2.XMLHTTP');

или если не заработает то строку:

new ActiveXObject('Microsoft.XMLHTTP');

впрочем сейчас попробую кроссбраузерно этот момент прописать

xargs ★★★
() автор топика
Ответ на: комментарий от anonymous

попробуй, немного переделал скрипт

xargs ★★★
() автор топика
Ответ на: комментарий от anonymous

>>кстате, под оперой оно не работает. можешь подправить?

если не трудно какую-либо информацию о том что не работает и какие ошибки вываливает (если вываливает)?

xargs ★★★
() автор топика
Ответ на: комментарий от xargs

Под оперой:

JavaScript - http://www.linux.org.ru/view-message.jsp?msgid=2888149&lastmod=1214728492226 Javascript URL thread: "javascript: reply_in_place('ancor_28', 'http://www.linux.org.ru/add_comment.jsp?topic=2888149&reply..."; Error: name: ReferenceError message: Statement on line 1: Undefined variable: reply_in_place Backtrace: Line 1 of unknown script reply_in_place('ancor_28', 'http://www.linux.org.ru/add_comment.jsp?topic=2888149&replyto=2888179'); stacktrace: n/a; see 'opera:config#UserPrefs|Exceptions Have Stacktrace'

anonymous
()
Ответ на: комментарий от anonymous

sdio выше говорит что под оперой надо unsafeWindow переделать

я вот только не особо точно знаю как, попробуй сделать глобальный реплейс unsafeWindow на window

xargs ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.