簡體   English   中英

從WPF中的Web瀏覽器調用HTML頁面中存在的JavaScript函數

[英]Call JavaScript function present in HTML page from web browser in WPF

我是WPF的新手。 我在我的wpf應用程序中使用“WebBroswer”來渲染Google地圖。 我有一個googlemap.htm頁面,它包含一個初始化(lat,log)JavaScript函數。 現在我想從帶有lat和log參數的.xaml.cs文件中調用此函數。

Googlemap.htm

 <script>
        function initialize(lat, log) {
            var mapProp = {
                center: new google.maps.LatLng(lat, log),
                zoom: 5,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
        }
        google.maps.event.addDomListener(window, 'load', initialize);
    </script>

最簡單的方法是使用WebBrowser.InvokeScript方法:

 this.WebBrowser.InvokeScript("initialize", 1, 2);

或者你也可以像這樣重寫你的JavaScript代碼:

 function initialize(lat, log) {
    var mapProp = {
       center: new google.maps.LatLng(lat, log),
       zoom: 5,
       mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);
 }

 document.myfunc = initialize; // expose it to the document scope

 google.maps.event.addDomListener(window, 'load', initialize);

所以現在你可以從C#代碼訪問myfunc

private void WebBrowser_OnLoadCompleted(object sender, NavigationEventArgs e)
{
    dynamic document = WebBrowser.Document;

    document.myfunc(1, 2);
}

您也可以在沒有dynamic關鍵字的情況下調用myfunc

private void WebBrowser_OnLoadCompleted(object sender, NavigationEventArgs e)
{    
   var document = this.WebBrowser.Document;

   document.GetType().InvokeMember("myfunc", BindingFlags.InvokeMethod, null, document, new object[] {1, 2});
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM