WebBrowser-Control über JavaScript benachrichtigen

06/06/2008 - 14:38 von Joachim Fuchs | Report spam
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
 

Lesen sie die antworten

#1 Ulf Kadner
06/06/2008 - 17:19 | Warnen spam
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

Ähnliche fragen