【问题标题】:Find a sentence in an html page displayed in the browser and Highlight it [duplicate]在浏览器中显示的html页面中找到一个句子并突出显示它[重复]
【发布时间】:2017-04-22 07:30:30
【问题描述】:

我正在使用 asp.net mvc 来显示一个 .html 文档,我知道它包含什么。

我的控制器中有这个方法:

public ActionResult GetHtmlPage(string path)
{
    return new FilePathResult(path, "text/html");
}

我有这个简单的视图:

@{
ViewBag.Title = "ManageDocument";
}
<h2>ManageDocument</h2>
@Html.Action("GetHtmlPage", "myController", new { path = Model.documentPath })

文档显示没有问题。但我想突出显示我知道它存在于文档某处的特定句子

我的意思是,我正在尝试实现一个 JavaScript 代码,也许是为了找到我想在文档中突出显示的特定句子并突出显示它! 我在 JavaScript 中阅读了有关 window.find() 的信息,但我的 asp.net 解决方案似乎无法识别它。

我正在使用 VS2015 企业版

【问题讨论】:

  • 试试 mark.js,一个网络荧光笔

标签: javascript jquery html asp.net-mvc frontend


【解决方案1】:

您可以使用 jQuery 用一些标签包装文本并应用您可能需要的任何自定义样式。假设您有以下标记:

<div>
    This is some specific sentence
</div>

而你想要这样结束:

<div>
    This is <strong>some specific</strong> sentence
</div>

您可以尝试使用:contains 选择器来定位文本的所需部分,然后用一些标签将其包装起来:

$("div:contains('some specific')").html(function(_, html) {
   return html.replace(/(some specific)/g, "<strong>$1</strong>");
});

这是sample fiddle

【讨论】:

  • 如果我想在其中插入一个变量怎么办。 say var sen = 'some specific' ??
  • 是什么阻止您在代码中插入变量?只需用变量替换硬编码的值,这很简单:$("div:contains(" + sen + ")")。还有:var regex = new RegExp("(" + sen + ")", "g");。最后:return html.replace(regex, "&lt;strong&gt;$1&lt;/strong&gt;");
  • 尊敬的先生,我的知识阻止了我:D,让我试试
  • 另外,不要忘记考虑变量可能包含的任何特殊字符,这些字符可能会干扰 jQuery 选择器和正则表达式。在将其传递给 RegExp 构造函数之前,您需要正确地转义它们。
猜你喜欢
  • 2019-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 1970-01-01
  • 2016-08-12
  • 2011-12-05
  • 2020-04-03
相关资源
最近更新 更多