Montag, 14. November 2011

Auf globale Variablen des Browser Documents zugreifen

Willkommen auf meinem XBAP Blog. Ich möchte meine Erfahrungen mit XBAP Applications teilen. Als erstes beabsichtige ich auf globale Variablen des Browser Documents zuzugreifen.

Zugriff auf eine globale Variable

Die HTML Datei, die das XBAP im Frame hosted, definiert eine globale Variable "javatext":
<script type="text/javascript">
var javatext = "text aus java";


Der Zugriff auf diese Variable "javatext" erfolgt in C# dann wie folgt:

scri = BrowserInteropHelper.HostScript;
mess.Text = (string)scri.javatext;

Zugriff auf Arrays:
JAVASCRIPT:
<script type="text/javascript">
var record = new Array(3);
var table = new Array(record,record,record);  
C# XBAP im <iframe>:
dom = BrowserInteropHelper.HostScript;
mess.Text = (string)dom.record[0];
mess.Text = (string)dom.table[1][2];



Zugriff auf ein Objekt:


JAVASCRIPT:
<script type="text/javascript">
function Record(mandant, filiale, datei, data) {
                this.Mandant = mandant;
                this.Filiale = filiale;
                this.Datei = datei;
                this.Data = data;
            }Strokey.Net
var felder = new Array(99); felder[0] = "0000035"; felder[1] = "01"; var Kunde = new Record("nov", "", "kpdk1s", felder);
C# XBAP im <iframe>:
dom = BrowserInteropHelper.HostScript;
mess.Text = (string)dom.Kunde.Mandant;
//mess.Text = (string)dom.Kunde.Data[1]; //das gelingt nicht - kein Zugriff auf das Array innerhalb des Objektes!




Warum das Ganze?

In meinem Fall möchte ich via C# XBAP über Javascript Zugriff auf Daten eines älteren UNIX-Systems haben. Dieses UNIX-System nutzt einen Windows-Telnet-Thinclient als Terminal. Dieser Windows-ThinClient nutzt die WebBrowser Komponente. Via ESCAPE-Sequenzen des UNIX-Systems kann direkt HTML/JAVASCRIPT bidirektional in die WebBrowser-Komponente transportiert werden. Es ist reizvoll neben HTML auch XBAP-Programme für das Frontend ON TOP nutzen zu können. 


Benefit from the best Windows Desktop app in the world and use Strokey.Net!