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
> 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
>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...
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...
>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...
> > 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
> 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