2

有誰知道是否可以訪問和操作由Silverlight 4 WebBrowser控件呈現的HTML頁面中的元素。Silverlight 4 OOB應用程序訪問WebBrowser控件中頁面的HTML DOM

這種情況是這樣的。用戶使用提升的信任啓動Silverlight OOB應用程序。用戶操縱應用程序中的一些數據,但必須將部分數據提交給外部網站。如果我在WebBrowser控件中打開外部網站,是否有任何方法可以通過程序訪問DOM預先填寫外部網站的Web表單中的某些信息來幫助用戶?

回答

2

快速回答:號

龍答: 原意爲OOTB + WebBrowserControl是幫助客戶在這兩個RTF格式顯示烤(電子郵件,RSS等),並在同一實時提供打印支持大文檔發生的能力(報告等)。

iframe中的規則同樣適用於您使用此控件(據我所知,沒有任何計劃可以更改此設置)。

剛剛提到的這個場景讓我有點緊張,因爲我可以看到Silverlight團隊中的一些人圍繞安全問題提出了這個問題 - 因爲這可以用來通過網站等方式自動化DOS攻擊。 Silverlight的作爲不知情的有效載荷(即使有較高的信任用戶往往受騙安裝這樣的事情 - 它的現實抱歉)..

- 斯科特·巴恩斯/ Silverlight的前產品經理。

2

您可以使用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); 
} 
+0

您是否看到過有關「外部網站」的問題?如果這不起作用跨域,那麼這是行不通的。 – AnthonyWJones 2010-04-21 12:36:50

相關問題