Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 2

Битва с HTMLLoader-ом (эмуляция клика)

06.11.2015, 18:05. Показов 1355. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пример:
Браузер
есть сайт http://randstuff.ru/number/, мне нужно программно нажать на кнопку с генерировать.
Что бы это сделать через консоль браузера, достаточно найти id кнопки и выполнить в консоли веб-разработчика:document.getElementById("bu tton").click();

Теперь as3
ActionScript 3
1
2
3
4
5
6
7
8
9
var html:HTMLLoader = new HTMLLoader; 
var urlReq:URLRequest = new URLRequest("http://randstuff.ru/number/");
addChild(html);
html.addEventListener(Event.COMPLETE, onLoad);
html.load(urlReq);
 
function onLoad(e:Event):void {
     html.window.document.getElementById("button").click();
}
И конечно компилятор справедливо скажет: click is not a function
Собственно вопрос, как все таки вызвать js функцию click из as3?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2015, 18:05
Ответы с готовыми решениями:

Эмуляция клика JS
Подскажите можно ли эмулировать клик ЛКМ/ПКМ при помощи JS, если можно то желательно сразу примерчик. Или, как вариант: клик по...

Эмуляция клика мыши
Как эмулировать нажатие мыши на определенной точки на экране

Эмуляция клика мыши в координату
Программа эмулирует нажатия мыши. С кликом в текущие координаты курсора справляется, а если сохранить координаты в переменную и эмулировать...

4
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
06.11.2015, 21:43
Где будет выполняться ваше приложение? AIR или FlashPlayer? Если через плеер, то вам нужно использовать класс ExternalInterface для вызова кода JS
0
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 2
07.11.2015, 16:37  [ТС]
Приложение будет выполняться в AIR, знаю про ExternalInterface, но как я понял нужно для неё нужно внедрить в страничку html свою swf.
Мое приложение играет роль браузера, редактировать html я не могу. Мне нужно просто обратиться к элементу и вызвать в нем js функцию click().
0
3 / 3 / 4
Регистрация: 11.10.2015
Сообщений: 156
07.11.2015, 17:42
Братан, смотри - все просто. У тебя, как я понял, есть функция function click(e:MouseEvent){} Где ты выполняешь код генерации. Для того чтобы нажать программно, нужно весь код перенести в функцию какую-нибудь произвольную и из функции click ее вызывать. Если непонятно объяснил, вот пример:
PHP/HTML
1
2
3
4
5
6
7
funciton click(e:MouseEvent){
    generate();
}
 
function generate(){
    ...тут код для генерации твоего числа...
}
Теперь для вызова генерации числа, ты можешь использовать функцию click, а можешь просто программно вызвать generate().
0
 Аватар для alexandrratush
59 / 59 / 15
Регистрация: 06.05.2014
Сообщений: 206
07.11.2015, 19:13
До этого никогда не использовал класс HTMLLoader, поэтому решил написать тестовое приложение, и вам заодно помочь.
Вот код класса:
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
package
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import flash.html.HTMLLoader;
    import flash.net.URLRequest;
 
    public class HTMLLoaderTest extends Sprite
    {
        private var _htmlLoader:HTMLLoader;
        private var _button:Sprite;
 
        public function HTMLLoaderTest()
        {
            addEventListener(Event.ADDED_TO_STAGE, onAddedToStageHandler);
        }
 
        private function onAddedToStageHandler(event:Event):void
        {
            if (HTMLLoader.isSupported)
            {
                _htmlLoader = new HTMLLoader;
                var urlReq:URLRequest = new URLRequest("http://randstuff.ru/number/");
                _htmlLoader.width = stage.stageWidth;
                _htmlLoader.height = stage.stageHeight;
                addChild(_htmlLoader);
                _htmlLoader.addEventListener(Event.COMPLETE, onLoad);
                _htmlLoader.load(urlReq);
            } else
            {
                trace("HTMLLoader is not supported");
            }
 
            _button = new Sprite();
            _button.graphics.beginFill(0xFF0000);
            _button.graphics.drawRect(30, 30, 30, 30);
            _button.graphics.endFill();
            addChild(_button);
        }
 
        private function onLoad(e:Event):void
        {
            _button.addEventListener(MouseEvent.CLICK, clickButtonHandler);
        }
 
        private function clickButtonHandler(event:MouseEvent):void
        {
            var document:Object = _htmlLoader.window.document;
            var evt:Object = document.createEvent("MouseEvents");
            evt.initMouseEvent("click", true, true, _htmlLoader.window, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
            var button:Object = _htmlLoader.window.document.getElementById("button");
            button.dispatchEvent(evt);
        }
    }
}
Код отправки события нашел в Интернете. В JS и HTML я не очень силён, но вроде работает все.
Пользуйтесь на здоровье.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.11.2015, 19:13
Помогаю со студенческими работами здесь

Эмуляция клика. Не работает координата y
Здравствуйте! Помогите, по данному коду курсор перемещается только по координатам x, а по y нет. Почему? P.S Если можно, побыстрее... Сроки...

Программная эмуляция клика мыши
Какой функцией эмулировать нажатие левой кнопки мыши. И установить кол-во нажатий в секунду. Заранее благодарен.

Эмуляция клика мышью к QTWebEngineView
Добрый день! Возникла проблема, решения которой не удалось найти самостоятельно. Было приложение работающее с QWebView, сейчас...

Эмуляция клика на гиперссылку по кнопке
Есть поле МЕМО, в котором, среди прочего текста, может находиться адрес электронной почты. Нужно сделать так, чтобы по нажатию кнопки...

Эмуляция физического клика мышкой в браузере
Находил подобные темы в основном по эмуляции нажатию клавиш типо такой код // Create a new jQuery.Event object with specified event...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru