簡體   English   中英

使用JavaScript突出顯示Asp.net mvc中的html文檔表達式

[英]Highlighting an html document expression in Asp.net mvc using JavaScript

我正在嘗試突出顯示在Web瀏覽器上的html文檔中的特定句子。

我在我的控制器中有這個動作:

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

我有這個視圖 ,顯示指定路徑中的html文檔。

@model TextPlagiarismWebApp.Models.ViewModels.ManageDocumentViewModel

@{
    ViewBag.Title = "ManageDocument";
}

<h2>ManageDocument</h2>

@Html.Action("GetHtmlPage", "Upload", new { path = Model.documentPath })

<script type="text/javascript">
    var sen = @Model.sentence["sentence"];
    $("div:contains('" + sen + "')").html(function (_, html) {
        var regex = new RegExp("(" + sen + ")", "g");
        return html.replace(regex, '<span style="background-color:#FFFF00">$1</span>');
    });
</script>

我調試了程序,sen變量是我所期望的:

var sen = @Model.sentence["sentence"];

但盡管如此,它並沒有強調我正在尋找的特定句子。 它只顯示原始的html文檔。

讓我們以這個例子來判斷句子是否存在:

var sen = "Requirements for breeding tanks vary with each species. Separate tanks may be required."

HTML:

<p class=MsoNormal style='text-align:justify;mso-layout-grid-align:none;
text-autospace:none'><span lang=EN-AU style='color:black'>Requirements for
breeding tanks vary with each species. Separate tanks may be required.<o:p>
</o:p></span></p>

但這個句子沒有突出顯示,我無法弄清楚原因。

關於什么是錯的任何建議?

你可以這樣做

  $("body").html(function (_, innerHTML) {
        var regex = new RegExp("(" + sen + "'))", "g");
        return innerHTML.replace(/\s\s+/g, ' ').replace(/\r?\n|\r/g, '').replace(regex, '<span style="background-color:#FFFF00">$1</span>');
    });

第一個替換將.replace(/\\s\\s+/g, ' ')將刪除多個空格而.replace(/\\r?\\n|\\r/g, '')將刪除段落中的斷行

這里是示例https://jsfiddle.net/jz86v8we/10/

編輯

您可以通過添加使用Jquery-Highlight-5.js

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script>

<script src="http://johannburkard.de/resources/Johann/jquery.highlight-5.js"></script>

並在腳本中使用

$("body").highlight("The Business");

並將其添加到您的css文件中

.highlight { background-color: yellow }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM