Ik probeer het invullen van velden op een website van men werk te automatiseren. Momenteel zijn er gebruikers die informatie overkopiëren van Excel naar de website wat hen vrij veel tijd kost. Ik zou dit process graag geautomatiseerd zien. Helaas heeft het development team het zeer druk en is er na 1.5 jaar nog geen oplossing zoals via het uploaden van excel via portal, ftp dropzone,... in de database. Ik kwam daarom op het idee om iets via de front end te maken d.m.v. van VB.NET en een webbrowser control.
Een deel van het project werkt maar ik ben nu op een probleem gestoten dat ik na een aantal dagen zoeken maar niet opgelost krijg. Er is namelijk een knop op een pagina die een JavaScript oproept met daarin ook een "showmodeldialog()" die je naar een soort popup window brengt waar jij elementen moet toevoegen aan een selectbox. Wanneer je in deze popup window "accept" klikt worden deze waarden via een variabel terugbezorgd om het JavaScript verder af te werken. Zo wordt op de hoofdpagina een listbox verder afgewerkt via JavaScript door een listbox optie toe te voegen met de waarde van de variabel die werd teruggestuurd.
De showmodeldialog() bezorgd me grote kopzorgen
. Wanneer je gewoon via de webbrowser control automatisch de bovengenoemde knop "klikt" opent er zicht een soort popup window maar die kan ik helemaal niet aanspreken via code. Dit extra schermpje maakt geen deel uit van de webbrowser control en "webbrowser1_newwindow" event wordt zelfs niet getriggered.
Ik kan het ook niet oplossen door een tweede webbrowser control te gebruiken en rechstreeks naar de "popup window" te navigeren omdat ik dat een deel van het JavaScript mis.
Graag een duwtje in de juiste richting, is er toch een mogelijkheid om de webbrowser control te laten samenwerken met de popup afkomstig vn "showmodeldialog()" ?
Hier zijn relevante fragmenten van de code om duiding te geven:
Ik denk dat de functie openOptieWindow moet uitgevoerd worden en dat ik er niet omheen kan omdat de hoofdpagina een lege selectbox heeft die nog opties moet krijgen via code. Deze worden aangemaakt via het JavaScript
Ik gebruik Visual Studio 2013 en de website werkt met Internet Explorer 10.
Na verder te zoeken kwam ik met een alternatieve oplossing namelijk zelf een javascript ontwerpen en loslaten op de website.
Eerst nog een referentie gemaakt naar de extension microsoft.mshtml en "Imports mshtml" gebruikt in de code en mijn probleem is opgelost!
Een deel van het project werkt maar ik ben nu op een probleem gestoten dat ik na een aantal dagen zoeken maar niet opgelost krijg. Er is namelijk een knop op een pagina die een JavaScript oproept met daarin ook een "showmodeldialog()" die je naar een soort popup window brengt waar jij elementen moet toevoegen aan een selectbox. Wanneer je in deze popup window "accept" klikt worden deze waarden via een variabel terugbezorgd om het JavaScript verder af te werken. Zo wordt op de hoofdpagina een listbox verder afgewerkt via JavaScript door een listbox optie toe te voegen met de waarde van de variabel die werd teruggestuurd.
De showmodeldialog() bezorgd me grote kopzorgen

Ik kan het ook niet oplossen door een tweede webbrowser control te gebruiken en rechstreeks naar de "popup window" te navigeren omdat ik dat een deel van het JavaScript mis.
Graag een duwtje in de juiste richting, is er toch een mogelijkheid om de webbrowser control te laten samenwerken met de popup afkomstig vn "showmodeldialog()" ?
Hier zijn relevante fragmenten van de code om duiding te geven:
HTML: Hoofdpagina: De knop die het JavaScript oproept.
1
| <input class="button" value="Select" onclick="openOptieWindow();" type="BUTTON"> |
HTML: Hoofdpagina: De selectbox die uiteindeljik dient opgevuld te worden met de opties geselecteerd in de "popup"
1
2
| <select size="4" multiple="" name="methoden"> </select> |
Visual Basic .NET: Oproepen van het JavaScript via code: optieWindow
1
| WebBrowser1.Document.InvokeScript("openOptieWindow") |
JavaScript: JavaScript die via knop wordt aangeroepen
1
2
3
4
5
6
7
8
9
10
11
12
13
| function openOptieWindow() { var selections = showModalDialog("URLnaarPOPUPwindow", document.forms[0].methoden.options); if (selections) { var lijst = document.forms[0].methoden; lijst.options.length = 0; for (var i=0; i < selections.length; i++) { var selectie = selections[i]; var optid = selectie[0]; var naam = selectie[1]; lijst.options[i] = new Option(naam, optid); } } } |
Ik denk dat de functie openOptieWindow moet uitgevoerd worden en dat ik er niet omheen kan omdat de hoofdpagina een lege selectbox heeft die nog opties moet krijgen via code. Deze worden aangemaakt via het JavaScript
Ik gebruik Visual Studio 2013 en de website werkt met Internet Explorer 10.
Na verder te zoeken kwam ik met een alternatieve oplossing namelijk zelf een javascript ontwerpen en loslaten op de website.
Visual Basic .NET: Oplossing via eigen JavaScript
1
2
3
4
5
6
7
| Dim scriptText = "document.forms[0].Methoden.options[0] = new Option(""blabla","blabla"");" Dim head As HtmlElement = Me.WebBrowser1.Document.GetElementsByTagName("head")(0) Dim script As HtmlElement = Me.WebBrowser1.Document.CreateElement("script") Dim scriptElement As IHTMLScriptElement = DirectCast(script.DomElement, IHTMLScriptElement) scriptElement.text = scriptText head.AppendChild(script) |
Eerst nog een referentie gemaakt naar de extension microsoft.mshtml en "Imports mshtml" gebruikt in de code en mijn probleem is opgelost!
[ Voor 11% gewijzigd door alkoura op 20-11-2016 12:42 . Reden: een oplossing gevonden ]