【问题标题】:Handle text selection wp8 Webbrowser处理文本选择 wp8 Webbrowser
【发布时间】:2014-02-15 06:38:06
【问题描述】:

我正在使用WP8 webbrowser控件显示一个html页面,xaml是这样的

  <Grid Grid.Row="1" >
   <phone:WebBrowser  IsScriptEnabled="True" x:Name="mainBrowserControl">
            <tools:GestureService.GestureListener>
                <tools:GestureListener DragCompleted="GestureListener_DragCompleted"/>
            </tools:GestureService.GestureListener>
        </phone:WebBrowser>
</Grid>

我想要做的是当用户在浏览器中选择一些文本时显示一个应用程序栏。为此,我监听 DragCompleted 事件并在有一些文本选择时显示应用程序栏。使用的代码是

private void GestureListener_DragCompleted(object sender, DragCompletedGestureEventArgs e)
    {
        string selected_text = "";
        try
        {
          selected_text= //get selected text from browser
        }
        catch { }
        if (!string.IsNullOrEmpty(selected_text.Trim()))
        {
           Show Applicationbar menus
        }
    }

但是这种方法的问题是,如果用户只是在浏览器中选择一个文本,默认的复制图标是可见的,但是我如何在底部显示应用程序栏菜单(因为我没有拖动选择,只需制作一个仅选择 - 更像是双击)见附图

【问题讨论】:

  • 除了DragCompleted 事件之外,还要听DoubleTap 事件如何?
  • NO 它不会起作用,如果用户只是选择文本 DoubleTap 事件不触发

标签: windows-phone-8


【解决方案1】:

第一个问题。您可以通过此在 WebBrowser 中获取选定的内容

function GetSelectedText() {
   window.external.Notify(document.selection.createRange().htmlText);           
}

在您的GestureListener_DragCompleted 中调用 browser.InvokeScript("GetSelectedText");

可以在 browser.ScriptNotify 事件中获取文本

第二个问题,我也不知道。如果您得到解决方案,请告诉我。谢谢!

【讨论】:

  • 我的问题是关于没有选择文本(我可以像你提到的那样使用 javascript)。但是我问当用户选择文本时要调用哪个事件? DragCompleted 仅在用户拖动选择时发生,如果用户只是选择文本我们会做什么?
  • @JMat 你可以使用ManipulationCompleted
猜你喜欢
  • 1970-01-01
  • 2018-12-05
  • 2014-09-28
  • 2010-12-23
  • 2021-07-21
  • 2017-12-27
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多