0

我正在使用 webview 并在 webview 中加载 html 页面,所以在这里我卡在某个地方,我想使用 javascript.here。我在下面解释我到底需要什么:我有这样的 html 数据-

“我选择了“widget”这个词。但我想知道选择是在“red”还是“blue”之后。这可能吗?我一直在网上搜索一些建议,但我遇到了麻烦寻找答案”

因此,假设从上面的文本中我选择了文本“选择在之后”(显示为粗体),我只需要该词之前的前一个词和该行中该词之后的词。假设我在第 2 行中选择,所以我需要该行中该单词之前的所有前一个单词以及该行中所选单词之后的所有单词,如果所选单词位于行首,则将前一个单词返回为 null 和剩余单词在所选单词之后直到行尾,最后一个单词类似,反之亦然

请告诉我们如何使用 JavaScript 来实现它?

4

2 回答 2

0

match使用正则表达式怎么样:

var pattern = /^(.+)(selection is after)(.+)$/;
match = "hello selection is after goodbye".match(pattern)

match[1] // hello
match[2] // selection is after
match[3] // goodbye
于 2013-04-05T11:30:47.170 回答
0

我在一个 JSFiddle 中创建了一个解决方案,在Selecting text before and after word

首先,我创建了一个段落来保存要选择的文本

<p id="yourTextContainer">Lorem ipsum data sid amet</p>

然后,在 JavaScript 中,我将段落拆分为 span,将每个单词的索引放在 name 属性中。然后,当单击一个单词时,它使用索引返回之前的所有单词和之后的所有单词。

    var textindex;
var textbefore;
var textafter;

$(document).ready(function(){
var words=$("#yourTextContainer").text().split(' ');
$("#yourTextContainer").html("");

$.each(words, function(i,val){
//wrap each word in a span tag 
$('<span name="'+ i+'"+ />').text(val +" ").appendTo("#yourTextContainer");

});

$("#yourTextContainer span").live("click",function(event){event.stopPropagation();
                                                          $("#yourTextContainer span").css("background-color","white");
$(this).css("background-color","blue");

//gets the text of clicked span tag
var textselected = $(this).text();
textindex = $(this).attr("name");                                                          
    alert("You just selected "+textselected+" index " + textindex);
textbefore= "";
textafter = "";                                                          
     $("span").each(function (index) { 
         // alert("LOOPING INDEX " + index);
         if (index<(textindex))
             textbefore = textbefore + $(this).text() + " ";
         if (index>(textindex))
             textafter = textafter + $(this).text() + " ";
         });
     alert("Text before is "+textbefore );
     alert("Text after is "+textafter );                                                     
});
});

例如,如果你点击“ipsum”,JS会提醒,“Lorem”作为前面的文本,“data sid amet”作为“ipsum”后面的文本。

希望这可以帮助!您也可以运行小提琴来了解我的意思。

于 2013-04-05T11:43:46.527 回答