有誰知道是否可以訪問和操作由Silverlight 4 WebBrowser控件呈現的HTML頁面中的元素。Silverlight 4 OOB應用程序訪問WebBrowser控件中頁面的HTML DOM
這種情況是這樣的。用戶使用提升的信任啓動Silverlight OOB應用程序。用戶操縱應用程序中的一些數據,但必須將部分數據提交給外部網站。如果我在WebBrowser控件中打開外部網站,是否有任何方法可以通過程序訪問DOM預先填寫外部網站的Web表單中的某些信息來幫助用戶?
有誰知道是否可以訪問和操作由Silverlight 4 WebBrowser控件呈現的HTML頁面中的元素。Silverlight 4 OOB應用程序訪問WebBrowser控件中頁面的HTML DOM
這種情況是這樣的。用戶使用提升的信任啓動Silverlight OOB應用程序。用戶操縱應用程序中的一些數據,但必須將部分數據提交給外部網站。如果我在WebBrowser控件中打開外部網站,是否有任何方法可以通過程序訪問DOM預先填寫外部網站的Web表單中的某些信息來幫助用戶?
快速回答:號
龍答: 原意爲OOTB + WebBrowserControl是幫助客戶在這兩個RTF格式顯示烤(電子郵件,RSS等),並在同一實時提供打印支持大文檔發生的能力(報告等)。
iframe中的規則同樣適用於您使用此控件(據我所知,沒有任何計劃可以更改此設置)。
剛剛提到的這個場景讓我有點緊張,因爲我可以看到Silverlight團隊中的一些人圍繞安全問題提出了這個問題 - 因爲這可以用來通過網站等方式自動化DOS攻擊。 Silverlight的作爲不知情的有效載荷(即使有較高的信任用戶往往受騙安裝這樣的事情 - 它的現實抱歉)..
- 斯科特·巴恩斯/ Silverlight的前產品經理。
您可以使用InvokeScript method在WebBrowser控件內執行javascript函數。請注意,您無法進行跨域通話。
實施例:
Html頁面
<html ><head>
<script type="text/javascript">
function SetValues(val) {
document.getElementById("q").value = val;
}
</script>
</head><body>
<input type="text" id="q" />
</body></html>
的Xaml
<Grid x:Name="LayoutRoot" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="268*" />
<ColumnDefinition Width="132*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="60" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<WebBrowser Name="webBrowser1" Grid.Row="1" Grid.ColumnSpan="2" />
<Button Content="Search" Name="button1" Click="button1_Click"
Grid.Column="1" />
<TextBox Name="textBox1" />
</Grid>
代碼後面
public MainPage()
{
InitializeComponent();
webBrowser1.Navigate(new Uri("http://localhost:58976/HTMLPage1.htm"));
}
private void button1_Click(object sender, RoutedEventArgs e)
{
webBrowser1.InvokeScript("SetValues",textBox1.Text);
}
您是否看到過有關「外部網站」的問題?如果這不起作用跨域,那麼這是行不通的。 – AnthonyWJones 2010-04-21 12:36:50