0

HTML 文字列を表示するための WebBrowser コントロールがあります。< img src=""> タグが含まれています。ここで要件があります。ユーザーが画像をタップすると、新しいネイティブ ページに移動して拡大版を表示し、ズーム機能などを実装します。しかし、WebBrowsre は TAP イベントを無視しているようです。では、WebBrowser コントロールの画像から Windows Phone のネイティブ ページに移動するにはどうすればよいでしょうか。

この問題のため、< img> タグの外側に < a> リンクを追加したくありません

4

1 に答える 1

0

JavaScript を介して WebBrowser コントロールで画像の位置を検出できます。

function fetchImagePosition()
{ 
    var rect = document.getElementByIdimageId").getBoundingClientRect(); 
        window.external.Notify(rect.left + ',' + rect.top + ',' + rect.right + ',' + rect.bottom);
} 

また、上記のスクリプト実行を HTML に追加してロードします。

window.onload = function () 
    { 
      var elem = document.getElementById('content');                                    
window.external.Notify(elem.scrollHeight + ''); fetchLinkPosition();} 

WebBrowserJavaScript を実行できるようにしますIsScriptEnabled=true。ハンドラーを WebBrowserScriptNotifyイベントに追加して、画像の位置をキャッチし、それをローカル フィールドに保存します。

  private void BrowserScriptNotify(object sender, NotifyEventArgs e)
        {
                var rectBoundaries = e.Value.Split(',').Select(double.Parse).ToArray();
                var rectHeight = rectBoundaries[3] - rectBoundaries[1];
                var rectWidth = rectBoundaries[2] - rectBoundaries[0];
                _imageRect= new Rect(rectBoundaries[0], rectBoundaries[1], rectWidth, rectHeight);

        }

Tapイベント ハンドラーを に追加しますLayoutRoot

  private void LayoutRootTap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            var point = e.GetPosition(Browser);
            if (_imageRect.Contains(point))
            {
               NavigationService.Navigate("YourPageUri");
            }
        }
于 2013-06-07T14:41:11.147 に答える