Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
16 / 16 / 5
Регистрация: 09.06.2015
Сообщений: 93
1
.NET 4.x

WebBrowser emulation mouseEvent

25.11.2018, 16:49. Просмотров 364. Ответов 0

Всем привет!
Задача: перетащить мышкой div в WebBrowser
Условие: не тревожить положение реального курсора
Столкнулся с недопониманием:

добавляю скрипт, который должен эмулировать действия мыши
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                    HtmlElement eventMouse = s.Document.CreateElement("script");
                    eventMouse.SetAttribute("text", @"
function SliderMouseSend(args) 
{ 
var targetNode = document.getElementsByClassName('bgSlider')[0]; 
if (targetNode) triggerMouseEvent (targetNode,args);
}
 
function triggerMouseEvent (node, eventType) {
    var clickEvent = document.createEvent ('MouseEvents');
    clickEvent.initEvent (eventType, true, true);
    node.dispatchEvent (clickEvent);
}
");
                    s.Document.GetElementsByTagName("head")[0].AppendChild(eventMouse); // s - WebBrowser
далее нахожу нужный DIV
C#
1
HtmlElement slider = s.Explore.Clear()[Source.clasName, "bgSlider"].Result; // своя обёртка, тут всё ок, div находиться
и далее пытаюсь передвинуть div посредством эмуляции мыши

C#
1
2
3
4
5
6
7
8
9
10
                    s.Document.InvokeScript("SliderMouseSend", new object[]{ "mousedown" });
                    for (int i = 0; i < 480; i++)
                    {
                        s.Document.InvokeScript("SliderMouseSend", new object[]{ "mousemove",2,2 });
                        //slider.SetAttribute("style", $"left: {i}px;top: 0px;cursor: default;");
                        //slider.Style = $"left: {i}px;top: 0px;cursor: default;";
                        Application.DoEvents();                       
                        Thread.Sleep(20);
                    }
                    s.Document.InvokeScript("SliderMouseSend", new[] { "mouseup" });
В итоге ничего не происходит...
Подскажите куда копать?
пробовал уже по всякому, и mouseEnentы, и touchEventы - все как с гуся вода, одна надежда на вашу помощь
дополнительно, предупреждая вопросы:
- скрипт внедряется, проверено
- страница загружена полностью, проверено
- нужный элемент находиться, проверено

Дополнительно: JS Script, отвечающий за слайдер
Кликните здесь для просмотра всего текста

Javascript
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
    <!-- Javascripts
   ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="/assets/application-e59389510052a61e64dad70846033e02.js" type="text/javascript"></script>
 
      <script type="text/javascript">
    showVoteFields = function () {
      $('.vote-fields').show();
    };
 
    jQuery.QapTcha = {
      build : function(options)
      {
          var defaults = {
          txtLock : '',
          txtUnlock : '<span class="can-vote">Можете голосовать!</span>',
          disabledSubmit : true,
          autoRevert : true,
          PHPfile : 'php/Qaptcha.jquery.php',
          autoSubmit : false
            };
 
        if(this.length>0)
        return jQuery(this).each(function(i) {
          /** Vars **/
          var
            opts = $.extend(defaults, options),
            $this = $(this),
            form = $('form').has($this),
            Clr = jQuery('<div>',{'class':'clr'}),
            bgSlider = jQuery('<div>',{'class':'bgSlider'}),
            Slider = jQuery('<div>',{'class':'Slider'}),
            TxtStatus = jQuery('<div>',{'class':' TxtStatus dropError',text:opts.txtLock}),
            inputQapTcha = jQuery('<input>',{name:generatePass(32),value:generatePass(7),type:'hidden'});
 
          /** Disabled submit button **/
          if(opts.disabledSubmit) form.find('input[type=\'submit\']').attr('disabled','disabled');
 
          /** Construct DOM **/
          bgSlider.appendTo($this);
          Clr.insertAfter(bgSlider);
          TxtStatus.insertAfter(Clr);
          inputQapTcha.appendTo($this);
          Slider.appendTo(bgSlider);
          Slider.prepend('Сдвиньте кнопку вправо')
          $this.show();
 
          Slider.draggable({
            revert: function(){
              if(opts.autoRevert)
              {
                if(parseInt(Slider.css("left")) > (bgSlider.width()-Slider.width()-10)) return false;
                else return true;
              }
            },
            containment: bgSlider,
            axis:'x',
            stop: function(event,ui){
              if(ui.position.left > (bgSlider.width()-Slider.width()-10))
              {
                // set the SESSION iQaptcha in PHP file
                $.post(opts.PHPfile,{
                  action : 'qaptcha',
                  qaptcha_key : inputQapTcha.attr('name')
                },
                function(data) {
                  if(!data.error)
                  {
                    Slider.draggable('disable').css('cursor','default');
                    inputQapTcha.val('');
                    TxtStatus.html(opts.txtUnlock).addClass('dropSuccess').removeClass('dropError');
                    form.find('input[type=\'submit\']').removeAttr('disabled');
                    if(opts.autoSubmit) form.find('input[type=\'submit\']').trigger('click');
                    showVoteFields();
                    Slider.text('Готово!')
                  }
                },'json');
              }
            }
          });
 
          function generatePass(nb) {
                var chars = 'azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN_-#@';
                var pass = '';
                for(i=0;i<nb;i++){
                    var wpos = Math.round(Math.random()*chars.length);
                    pass += chars.substring(wpos,wpos+1);
                }
                return pass;
            }
 
        });
      }
    }; jQuery.fn.QapTcha = jQuery.QapTcha.build;
 
    $('.QapTcha').QapTcha({
      autoSubmit:false,
      autoRevert:true,
      PHPfile:'/votes/quaptcha.json'
    });
 
    $('#vote_loading').remove();
    var a1 = 'd';
var aps2 = 'bBv';
var am3s = 'dQ';
var ae = 'J';
var a2 = 'i';
var ad4 = 'aVv';
var at = 'KU';
var abuo = 'pm1';
var a8q = 'fV';
var ajx4 = 'zfp';
var ay = at + aps2;
var a6s = am3s + a8q;
var av = at + am3s;
var ak = av + av;
var a7c = at + a6s;
var a5gp = a2 + am3s;
var ac7 = ad4 + ay;
var aoa = aps2 + av;
var amz = a7c + av;
var a8j1 = a1 + a8q;
var ajk = ak + ajx4;
var cache_val = 'dQfV' + aps2 + a1 + 'bBvKUdQ' + a8j1 + a7c + a8j1 + ae;
$('#server_cache').val(cache_val);


html элемента:
Кликните здесь для просмотра всего текста

HTML5
1
2
3
4
5
6
<div class="QapTcha"><div class="bgSlider">
  <div class="Slider ui-draggable">Сдвиньте кнопку вправо</div>
</div>
  <div class="clr"></div>
  <div class=" TxtStatus dropError"></div><input name="azUKjpqq56mk4mrsQwRsX6KjQ_2346R" value="V_xfUky" type="hidden">
</div>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2018, 16:49
Ответы с готовыми решениями:

WebBrowser переприсвоить другому WebBrowser. и потом первый закрыть
Задача такая. В отдельной форме (Форма2), которая открывается ShowDialog() есть визуальный обычный...

Нюанс с контролом webBrowser -все webBrowser's подхватывают куки
Всем привет! Ребят подскажите такое: (во всех веб браузерах у меня открывается по умолчанию...

WebBrowser. Как получить Html код страницы открытой в "webBrowser" в правильной кодировке?
Пробую получить Html код страницы открытой в &quot;webBrowser&quot;. public string GetHTMLCodPage() ...

BOOT from ATAPI CD-ROM: not Emulation
Помогите чайнику! При запуске компа выскакивает сообщение: BOOT from ATAPI CD-ROM: not Emulation...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2018, 16:49

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

ERROR: x86 emulation currently requires hardware acceleration
Здравствуйте. Помогите пожалуйста разобраться с ошибкой. До того как я столкнулся с этой ошибкой ,...

arm-none-eabi-ld: unrecognised emulation mode: cpu=cortex-m3
Привет, Вот начал осваивать STM32VL Dysvovery. Установил Yagarto и STLINK на комп ОС Mac OS...

MouseEvent. Координаты
есть главное окно, в нём расположены 8 индикаторов. переопределён метод mouseEvent(), но если...

Не доступен MouseEvent
Задача: при нажатии кнопки перескочить на 55 фрейм buttonstart.addEventListener( MouseEvent.ClICK...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.