首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在iOS中获得突出显示的WebView内容的完整跨度?

如何在iOS中获得突出显示的WebView内容的完整跨度?
EN

Stack Overflow用户
提问于 2016-03-14 20:49:34
回答 1查看 526关注 0票数 1

我突出显示了WebView内容,并取消了突出显示的文本。当我长按并拖动WebView内容时,我能够选择特定的单词,该时间区域被选中为未突出显示。

但现在的问题是,当我触摸WebView彩色文本中的任何地方时,我想要获得完整的颜色范围。

请帮帮我。

EN

回答 1

Stack Overflow用户

发布于 2016-03-15 14:05:24

我之前已经写了下面的代码片段,它们可能对你有用。

代码语言:javascript
代码运行次数:0
运行
复制
// this function only check if the selection is spanned across the highlighted span
function shouldSelectText() {
    // http://stackoverflow.com/a/6056743/510577
    var sel = rangy.getSelection();
    if (sel.rangeCount) {
        var range = sel.getRangeAt(0);
        var nodes = range.getNodes([1], function(node) {
            return node.tagName.toLowerCase() == "span"; // only need to satisfy one of open / close "span" tag, so no need to use "containsNode"
        });

        return (nodes.length <= 0);
    }
    return false;
}

在我的例子中,

  1. shouldSelectText在web视图的- (BOOL)canPerformAction:(SEL)action withSender:(id)sender期间被调用,以检查web视图是否应该在selection下展开突出显示。

//返回值表示在函数selectHighlight() { var sel =rangy.getSelection()之前是否突出显示;if (sel.rangeCount > 0) { // console.log("has selection!");if var <= 0) { return false;//如果之前没有高亮显示,则不做任何操作} //否则选择会高亮显示,所以我们将其展开以选择整个高亮显示范围(window.requestAnimationFrame(){ var range = rangy.createRange();range = _highlighter.getHighlightsInSelection().getRange();//使用未公开的rangy highlight的私有window.requestAnimationFrame!Sel.setSingleRange(范围);_highlightUnderSelection = _highlighter.getIntersectingHighlights(rangy.getSelection().getAllRanges());//必须是第一个});sel.setSingleRange true;} return false;}

  • 如果shouldSelectText返回true,则您可以使用selectHighlight扩展所选内容下的突出显示。

另外,您需要在原生侧使用UIWebViewstringByEvaluatingJavaScriptFromString来调用上述JS

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35988005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档