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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2014, 20:11   #1
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию Непонятки с кодом

Доброго времени суток дорогие форумчане. В JS не так давно, и может чего недопонимаю, но прошу помощи в таком деле. Есть скрипт (данные типа "fdemands, user, battle" берутся из скриптов игры):
Код:
setInterval(
function add(){
if (user.chp == user.hp && user.cma == user.ma && user.cen == user.en && battle.fight_end == true){
	var ft = $(".MainMenu").children($(".FightingMenu")).children($("a"));
	ft[2].click();//заходим	
	var haot = $("#fdemands_menu").children($("#span_mode2")).children($("a"));
	if (haot[2].innerHTML != ""){ 
	fdemands.load(2);
	
	var count = $("#fcount");
	count.val(3);
	var minlvl = $("#fminlev");
	minlvl.val(19);
	var maxlvl = $("#fmaxlev");
	maxlvl.val(21);

	fdemands.setWait(0);	
	fdemands.addDemand();
}
}
},2500);
Краткая суть. Пишу небольшую автоматизацию для браузерной игры. Данная функция должна:
1. Зайти во вкладку бои
Код:
if (user.chp == user.hp && user.cma == user.ma && user.cen == user.en && battle.fight_end == true){
	var ft = $(".MainMenu").children($(".FightingMenu")).children($("a"));
	ft[2].click();//заходим
2. Найти нужный тип боев и зайти в его вкладку
Код:
var haot = $("#fdemands_menu").children($("#span_mode2")).children($("a"));
	if (haot[2].innerHTML != ""){ 
	fdemands.load(2);
3. Выставить необходимые данные для заявки
Код:
	var count = $("#fcount");
	count.val(3);
	var minlvl = $("#fminlev");
	minlvl.val(19);
	var maxlvl = $("#fmaxlev");
	maxlvl.val(21);
4. Подать заявку
Код:
	fdemands.setWait(0);	
	fdemands.addDemand();
Так вот, если в таком порядке запускать все ручками через консоль браузера, (тобишь 4 части кода последовательно запустить в консоли) все отлично работает. Но если я запущу весь скрипт как он есть, он выполнит все действия, кроме последнего (fdemands.addDemand().
В чем собственно может быть проблема.
Kazik вне форума Ответить с цитированием
Старый 31.12.2014, 08:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

setWait что делает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.12.2014, 09:48   #3
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

На сколько знаю Javascript запускает все функции "одновременно".
Так что допустим fdemands.load(2) может закончить выполнение после fdemands.addDemand();
Думаю поэтому код работает если запускать его обрывками.
buriat вне форума Ответить с цитированием
Старый 28.01.2015, 10:44   #4
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

Цитата:
Сообщение от buriat Посмотреть сообщение
На сколько знаю Javascript запускает все функции "одновременно".
Так что допустим fdemands.load(2) может закончить выполнение после fdemands.addDemand();
Думаю поэтому код работает если запускать его обрывками.
Я тоже так сначала думал, но для исключения данной проблемы использовал:
Код HTML:
setTimeout(fdemands.addDemand();, <вплоть до 10 секунд>)
И это всеравно не дало результатов.

Также пробовал проверять загрузку фрейма и только после этого выполнять нужный код, но и это не помогло. Уже незнаю в какую сторону копать

P.S. Кстати, чуть не забыл. Нужный фрейм всеравно остается загруженным, и команда должна выполняться, но единственное, что наблюдается - обновление фрейма.

Последний раз редактировалось Kazik; 28.01.2015 в 10:47.
Kazik вне форума Ответить с цитированием
Старый 28.01.2015, 10:55   #5
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
setWait что делает?
Данная функция выставляет время для начала боя. Также взята из кодов игры и 100% работает.
Kazik вне форума Ответить с цитированием
Старый 28.01.2015, 11:19   #6
buriat
Форумчанин
 
Регистрация: 28.06.2010
Сообщений: 189
По умолчанию

Ты вставил в свою страницу iframe со страницой на другом домене и хочешь поменять там значения input полей?
Правило ограничения домена
buriat вне форума Ответить с цитированием
Старый 28.01.2015, 11:34   #7
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Цитата:
Но если я запущу весь скрипт как он есть, он выполнит все действия, кроме последнего (fdemands.addDemand().
с чего так решили?
lomastr_ вне форума Ответить с цитированием
Старый 28.01.2015, 11:51   #8
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

Цитата:
Сообщение от buriat Посмотреть сообщение
Ты вставил в свою страницу iframe со страницой на другом домене и хочешь поменять там значения input полей?
Правило ограничения домена
Я выполняю код в консоли браузера. Есть похожие коды, которые успешно работают.
Kazik вне форума Ответить с цитированием
Старый 28.01.2015, 11:52   #9
Kazik
Форумчанин
 
Регистрация: 27.05.2009
Сообщений: 192
По умолчанию

Цитата:
Сообщение от lomastr_ Посмотреть сообщение
с чего так решили?
по результату.
Kazik вне форума Ответить с цитированием
Старый 28.01.2015, 12:01   #10
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

так мало ли что может влиять на результат, у вас же спрашивают почему решили что не выполняется?
lomastr_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятки с Си Aleksey_voyaka Помощь студентам 4 20.10.2012 14:16
непонятки gling Microsoft Office Excel 8 05.01.2011 21:25
непонятки с if mrgrudge PHP 2 05.10.2010 12:01
Непонятки с GetKeyState Terrance! Помощь студентам 1 12.05.2010 14:36
Непонятки с кнопками Devoto Общие вопросы Delphi 2 16.11.2008 20:47