using System;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Navigation;
namespace TestWebBrowser
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void bowser_LoadCompleted(object sender, NavigationEventArgs e)
{
//加入ProcMessage事件,處理傳回字串
sh.ProcMessage = (s) =>
{
MessageBox.Show(s);
};
//執行Script,取得熱門新聞,注意: 必須要在網頁載入完成後才可呼叫
browser.InvokeScript("eval", @"
var list = document.getElementsByClassName('top-stories-section')[0]
.getElementsByTagName('h2');
var news = [];
for (var i = 0; i < list.length; i++) {
news.push(list[i].getElementsByTagName('span')[0].innerHTML);
}
window.external.SendMessage(news.join('\n'));
");
}
#region 供從WebBrowser網頁呼叫C#方法的溝通物件
[ComVisible(true)]
public class ScriptHelper
{
public Action<string> ProcMessage = null;
public void SendMessage(string msg)
{
if (ProcMessage != null)
ProcMessage(msg);
}
}
private ScriptHelper sh = new ScriptHelper();
#endregion
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
//指定ObjectForScripting,網頁可透過window.external存取該物件
browser.ObjectForScripting = sh;
}
}
}