2

Silverlight 4 WebBrowser コントロールによってレンダリングされる html ページ内の要素にアクセスして操作できるかどうかは誰にもわかりません。

シナリオはこんな感じ。ユーザーは、昇格された信頼で Silverlight OOB アプリケーションを起動します。ユーザーはアプリケーションで一部のデータを操作しますが、データの一部を外部 Web サイトに送信する必要があります。WebBrowser コントロールで外部サイトを開く場合、DOM へのプログラム アクセスを介して外部サイトの Web フォームに情報を事前に入力することで、ユーザーを支援する方法はありますか?

4

2 に答える 2

2

InvokeScriptメソッドを使用して、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);
}
于 2010-04-21T07:35:21.667 に答える
2

簡単な答え: いいえ。

長い回答: OOTB + WebBrowserControl の当初の目的は、顧客が両方のリッチ テキスト形式の表示 (電子メール、RSS など) を焼き込めるようにすると同時に、大きなドキュメント (レポートなど) の印刷サポートを提供することでした。

このコントロールと同じルールが iframe に適用されます (私が知る限り、これを変更する予定はありません)。

あなたが今言及したシナリオは、Silverlight チームの何人かがセキュリティに関する問題を提起しているのを見ることができるので、私は少し緊張しました。ペイロード(信頼度が高くても、ユーザーはしばしばだまされてこのようなものをインストールします-その現実は申し訳ありません..

- Scott Barnes / 元 Silverlight プロダクト マネージャー。

于 2010-04-25T12:28:00.460 に答える