Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   иммитация клика (https://javascript.ru/forum/misc/23903-immitaciya-klika.html)

Azazello77 11.12.2011 04:36

иммитация клика
 
имеется кнопка с параметрами

<a onclick="return Index.submit_login('server_ru17');" href="#">
<span class="world_button_inactive">Мир 17</span>



пытался кликнуть так -
var cmdname="script";
var cmdtime=15;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){$('#world_button_inactive').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);


не идет.. может стоит по координатам?

trikadin 11.12.2011 04:38

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

Azazello77 11.12.2011 13:29

ну примерно так)

trikadin 11.12.2011 13:36

Извините, а почему, собственно, оно у вас вообще должно было кликнуть? Вы просто создали строчку, и всё.

Azazello77 11.12.2011 14:24

в смысле создал строчку? извините, не понял..

trikadin 11.12.2011 14:34

Просто используйте это:
$("#world_button_inactive").click()

Azazello77 11.12.2011 14:41

ваш вариант от моего в первом сообщении отличается лишь двойными кавычками.. и так же не работает

trikadin 11.12.2011 14:44

"Двойные кавычки" в js - это строка! И строка выполняться не будет. Без ухищрений, конечно.
$(document).ready(function(){
 $("#world_button_inactive").click()
});

Azazello77 11.12.2011 14:48

возможно я слишком малую часть кода привел..

<div id="active_server" style="overflow:visible; margin-bottom:5px;">
<a href="#" onclick="return Index.submit_login('server_ru17');">
<span class="world_button_inactive">Мир 17</span></a>
		 
<p id="show_all_server" style="margin-top:5px;text-align:center">
<a href="#" onclick="$('#show_all_server').hide();$('#inactive_server_list').show();return false">Показать все миры</a></p>
</div>

<div id="inactive_server_list" style="display:none;overflow:visible;margin-bottom:1px;margin-top:10px;clear:both;">
<a href="#" onclick="return Index.submit_login('server_ru7')">
<span class="world_button_inactive">Мир 7</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru8')">
<span class="world_button_inactive">Мир 8</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru9')">
<span class="world_button_inactive">Мир 9</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru10')">
<span class="world_button_inactive">Мир 10</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru11')">
<span class="world_button_inactive">Мир 11</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru12')">
<span class="world_button_inactive">Мир 12</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru13')">
<span class="world_button_inactive">Мир 13</span></a>							
<a href="#" onclick="return Index.submit_login('server_ru15')">
<span class="world_button_inactive">Мир 15</span></a>					
<a href="#" onclick="return Index.submit_login('server_ru16')">
<span class="world_button_inactive">Мир 16</span></a>					
<a href="#" onclick="return Index.submit_login('server_rus1')">
<span class="world_button_inactive">Speed</span></a>

Azazello77 11.12.2011 14:51

вопрос в том, что клик по другим кнопкам, где я использую аналогичны код - работает.. но там я привязываюсь к id или name кнопки..
а когда их нет, что то попал в тупик..

trikadin 11.12.2011 14:54

Ну ёлы... Ну это же класс! И тут куча элементов с таким классом. Если вам надо кликнуть по всем - то вот:

$(".world_button_inactive a").click()

trikadin 11.12.2011 14:55

Если по какой-то определённой - то вот так:
$(".world_button_inactive a:eq(2)").click()

Azazello77 11.12.2011 14:57

Цитата:

Сообщение от trikadin (Сообщение 141945)
"Двойные кавычки" в js - это строка! И строка выполняться не будет. Без ухищрений, конечно.

ну! вот поэтому у меня и использованы одинарные

trikadin 11.12.2011 14:59

Судя по вашем сообщениям, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://htmlbook.ru

Задавайте конкретные вопросы по ходу дела.

Azazello77 11.12.2011 15:03

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

trikadin 11.12.2011 15:09

Одинарные кавычки - та же строка. Вы попробовали те варианты, что я вам скинул?

Azazello77 11.12.2011 15:09

ваш вариант не работает)

trikadin 11.12.2011 15:14

Ясно. Тогда читать доки и обучаться.

Или идти в раздела Работа и писать там.

Ну, или ждать кого-то, кроме меня...

Azazello77 11.12.2011 17:03

гугль советует думать в эту сторону
click(createElement("a",{"onclick":"return Index.submit_login('server_ru17');","href":"#"},$( "world_selection")));

будем думать..)

Azazello77 12.12.2011 20:28

попробовал так -

var cmdname="script";
var cmdtime=8;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){$('.world_button_inactiv e a:eq(16)').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

не пошло((

GuardCat 13.12.2011 10:14

Функция кликает по первому родителю всех элементов с указанным классом. Похоже, это то, что вы хотели. Вставьте между тегами <script></script>.
function clickClassParent(className) {
	var victimsArray = document.querySelectorAll("." + className), x;
	var victimParent;
	for (x = 0; x < victimsArray.length; x++) {
		victimParent = victimsArray[x].parentNode;
		if (victimParent.onclick && victimParent.onclick instanceof Function) {
			victimParent.onclick();
		}
	}
}

clickClassParent("world_button_inactive");


Вот она же на тестовом стенде. Ваши функции в onclick заменены на alert() для тестирования. Также display внешнего div изменён с none на block. Внимание, запустив тест получите 5 последовательных alert'ов!
<!DOCTYPE html>
<html>
	<head></head>
	<body>
		<div id="inactive_server_list" style="display:block;overflow:visible;margin-bottom:1px;margin-top:10px;clear:both;">
			<a href="#" onclick="alert(4)">
				<span class="world_button_inactive">Мир 12</span>
			</a>
			<a href="#" onclick="alert(3)">
				<span class="world_button_inactive">Мир 13</span>
			</a>
			<a href="#" onclick="alert(2)">
				<span class="world_button_inactive">Мир 15</span>
			</a>
			<a href="#" onclick="alert(1)">
				<span class="world_button_inactive">Мир 16</span>
			</a>
			<a href="#" onclick="alert(0)">
				<span class="world_button_inactive">Speed</span>
			</a>
		</div>
		<script>
			function clickClassParent(className) {
				var victimsArray = document.querySelectorAll("." + className), x;
				var victimParent;
				for (x = 0; x < victimsArray.length; x++) {
					victimParent = victimsArray[x].parentNode;
					if (victimParent.onclick && victimParent.onclick instanceof Function) {
						victimParent.onclick();
					}
				}
			}

			clickClassParent("world_button_inactive");
		</script>
	</body>
</html>

Azazello77 13.12.2011 20:50

спасибо, но решил этот вопрос вот так -
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

Livanderiaamarum 13.12.2011 22:46

Цитата:

Сообщение от GuardCat (Сообщение 142428)
var victimsArray = document.querySelectorAll("." + className), x;
	var victimParent;

ахахахаха 2 раза переменные декларирует))))

Livanderiaamarum 13.12.2011 22:47

Цитата:

Сообщение от Azazello77 (Сообщение 142561)
спасибо, но решил этот вопрос вот так -
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);


ахахах ну вы и быдлокодеры ребят)) не в обиду но код красиво писать не умеете)

зачем несколько раз оператор var вызывать???

Livanderiaamarum 13.12.2011 22:48

var cmdname="script",
cmdtime=10,
cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

GuardCat 13.12.2011 22:55

Livanderiaamarum, а в чем неправильность? Это две разные переменные. Или следует декларировать все переменные в одну строку?
Поясните, пожалуйста, любителю, чем плохо вызывать var дважды или укажите куда копать, буду благодарен. Обычно, ограничиваю строку несколькими переменными, а затем начинаю новую строку var, чтобы не терять в читабельности, записывая километровые строки. Это неверно?

melky 13.12.2011 22:57

Цитата:

Сообщение от Azazello77 (Сообщение 142561)
спасибо, но решил этот вопрос вот так -
var cmdname="script";
var cmdtime=10;
var cmdparam="function addScript(url,callback){var s=document.createElement('script');s.type='text/javascript';document.getElementsByTagName('head')[0].appendChild(s);s.src=url; s.onload=callback;}addScript('http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js',function(){ $('.world_button_inactive:parent:first').click();});";
alert("prs::" + prskey + "::add::" + cmdname + "::" + cmdtime + "::" + cmdparam);

зачем для этого использовать jquery ?

Livanderiaamarum 13.12.2011 23:58

Цитата:

Сообщение от GuardCat (Сообщение 142617)
Livanderiaamarum, а в чем неправильность? Это две разные переменные. Или следует декларировать все переменные в одну строку?
Поясните, пожалуйста, любителю, чем плохо вызывать var дважды или укажите куда копать, буду благодарен. Обычно, ограничиваю строку несколькими переменными, а затем начинаю новую строку var, чтобы не терять в читабельности, записывая километровые строки. Это неверно?

нет, тут как бы оптимальность мы читабильность. просто считается хорошим тоном декларировать переменные вверху и сразу. это ОГРОМНО облегчает работу интерпритатору. Там более js использует высасывание направленное вверх. Если вам так читабильней то пользуетесь). обфуксатор все поправит


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