Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

WebBrowser-Control über JavaScript benachrichtigen

7 views
Skip to first unread message

Joachim Fuchs

unread,
Jun 6, 2008, 8:38:35 AM6/6/08
to
Hallo,

ich lade innerhalb einer WinForms-Anwendung in einem
WebBrowser-Steuerelement eine statische HTML-Seite (aus Ressource). Diese
enthält asynchrone JavaScript-Aufrufe.

Gibt es eine Möglichkeit, innerhalb einer JavaScript-Methode irgendein
Ereignis auszulösen, das auf der .NET-Seite entgegenenommen werden kann? Auf
Initiative des JS-Codes soll .NET-Code ausgeführt werden.

Gruß
Joachim
--

Dr. Joachim Fuchs - Autor - Dozent - Softwarearchitekt
MCT - MCAD
http://www.fuechse-online.de/beruflich/index.html -
http://vbnet.codebooks.de


Ulf Kadner

unread,
Jun 6, 2008, 11:19:48 AM6/6/08
to
Joachim Fuchs wrote:

> ich lade innerhalb einer WinForms-Anwendung in einem
> WebBrowser-Steuerelement eine statische HTML-Seite (aus Ressource). Diese
> enthält asynchrone JavaScript-Aufrufe.
>
> Gibt es eine Möglichkeit, innerhalb einer JavaScript-Methode irgendein
> Ereignis auszulösen, das auf der .NET-Seite entgegenenommen werden kann? Auf
> Initiative des JS-Codes soll .NET-Code ausgeführt werden.

Hallo Joachim!

Klar, das ist einfach. Erstelle dazu einfach zuerst eine Klasse (public)
die [ComVisible(true)] als Attribut hat. In Etwa:

[ComVisible(true)]
public class JsExecuter
{
public void ShowError()
{
MessageBox.Show("A error was thrown!");
}
}

Diese dann an die Eigenschaft «ObjectForScripting» des
Webbrowsercontrols übergeben.

webBrowser1.ObjectForScripting = new JsExecuter();

Im Javascript des HTML-Dokuments kannst Du dann einfach über
window.external diese Methode aufrufen. Einfaches Dokument dazu wäre:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<script type="text/javascript">
function callErrorBox()
{
window.external.ShowError();
}
</script>
</head>
<body>
<p><a href="javascript:callErrorBox();">Errorbox anzeigen</a></p>
</body>
</html>

Ist natürlich alles IE proprietär. Wenn Firefox/Mozilla als
Webbrowser-Control genutzt werden soll gehts nicht. Da haut irgendwas
nicht so hin wies soll.

MfG, Ulf

Kerem Gümrükcü

unread,
Jun 6, 2008, 11:28:23 AM6/6/08
to
Hallo Joachim,

>Gibt es eine Möglichkeit, innerhalb einer JavaScript-Methode irgendein
>Ereignis auszulösen, das auf der .NET-Seite entgegenenommen werden kann?
>Auf Initiative des JS-Codes soll .NET-Code ausgeführt werden.

[Gewusst wie: Implementieren der bidirektionalen
Kommunikation zwischen DHTML-Code und
Clientanwendungscode]

http://msdn.microsoft.com/de-de/library/a0746166.aspx

Geht aber nur bei IE,...

Grüße

Kerem

--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."
"Joachim Fuchs" <keine.joac...@fuechse-online.de> schrieb im
Newsbeitrag news:OXHJBJ9x...@TK2MSFTNGP04.phx.gbl...

Joachim Fuchs

unread,
Jun 6, 2008, 12:14:31 PM6/6/08
to
Hallo Ulf, hallo Kerem,

vielen Dank für die Antworten. Bei dem Stichwort ObjectForScripting fiel mir
dann auch wieder ein, dass ich vor drei Jahren in einem dotnetpro-Artikel
genau das beschrieben hatte. Hätte ich halt nochmal lesen sollen...

Kerem Gümrükcü

unread,
Jun 6, 2008, 12:25:38 PM6/6/08
to
Hallo Joachim,

>Hätte ich halt nochmal lesen sollen...

Das hättest Du auch sicherlich, wenn Du

a.) den Artikel noch hättest,...
oder
b.) es dir früher eingefallen wäre,...

Aber wofür einen DotNet Artikel, wenn
man hier einen Ulf und einen Kerem hat *g*


Grüße

Kerem

--
-----------------------
Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Microsoft Live Space: http://kerem-g.spaces.live.com/
Latest Open-Source Projects: http://entwicklung.junetz.de
-----------------------
"This reply is provided as is, without warranty express or implied."
"Joachim Fuchs" <keine.joac...@fuechse-online.de> schrieb im

Newsbeitrag news:O$Ek9B$xIHA...@TK2MSFTNGP02.phx.gbl...

Frank Dzaebel

unread,
Jun 6, 2008, 1:05:49 PM6/6/08
to
Hallo Joachim,

> > WebBrowser-Control über JavaScript benachrichtigen ...
> ObjectForScripting ...

Hättest Du sonst (ggf.) auch Deinen Kollegen Klaus fragen
können ;-)

"Über die Eigenschaft ObjectForScripting können
Sie ebenfalls eine .NET-Klasse für den Scripting-Code
einer geladenen Seite zugänglich machen."

[Gut in Forms | dotnetpro | Das Profi-Magazin für Entwickler]
http://www.dotnetpro.de/articles/onlinearticle1881.aspx
(von Klaus Aschenbrenner)

Aber dieser Artikel ist empfehlenswerter:

[Allroundgenie | dotnetpro | Das Profi-Magazin für Entwickler]
http://www.dotnetpro.de/articles/onlinearticle1801.aspx
(von Joachim Fuchs)


ciao Frank
--
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ulf Kadner

unread,
Jun 6, 2008, 6:15:00 PM6/6/08
to
Joachim Fuchs wrote:

> vielen Dank für die Antworten. Bei dem Stichwort ObjectForScripting fiel mir
> dann auch wieder ein, dass ich vor drei Jahren in einem dotnetpro-Artikel
> genau das beschrieben hatte.

Hallo Joachim!

Du schreibst wahrscheinlich zuviele Artikel. Aber einer gewissen Ironie
entbehrt das nicht! ;-)

Freut mich das wir Dir helfen konnten. Zumal Du mir mit Deinen Artikeln
auch schon oft geholfen hast.

MfG, Ulf

0 new messages