如何使用JavaScript或jQuery将纯文本站点捕获到变量中?

如何使用JavaScript或jQuery将纯文本站点捕获到变量中?,javascript,jquery,Javascript,Jquery,我需要将网站的所有内容保存在一个变量中,以便搜索特定的字符串 下面是一个内容的示例,它实际上是一个纯文本日志 ====================================================================== BEGIN_TEXT APPLEYARD IAN 23761347 BA 2 Airport Data: Code = JFK Name = JFK/John F Kennedy International City = New York Sta

我需要将网站的所有内容保存在一个变量中,以便搜索特定的字符串

下面是一个内容的示例,它实际上是一个纯文本日志

======================================================================
BEGIN_TEXT

APPLEYARD IAN 23761347 BA 2 Airport Data:
Code = JFK
Name = JFK/John F Kennedy International
City = New York
State = NY
Airport Data:
Code = LCY
Name = Lcy/London City Airport            '
City = London
State = England
sysTime:XXXXXXXXX0000 year:2012 month:7 day:16 hour:7 min:10 pm,END_TEXT

======================================================================

----(1341920977.93286)
                           2012/07/10 12:03:22.582
MAP UNAVAIL-AIRPORT CHECK IN ONLY *
>

======================================================================

----(1341920977.93286)
                           2012/07/10 12:03:23.202
I

======================================================================

----(1341920977.93286)
                           2012/07/10 12:03:23.337
IGND 
>

======================================================================

----(1341920977.93286)
                           2012/07/10 12:03:23.337
9V/BA2R16AUGJFKLCY

======================================================================
这是我最初的想法:

var content = document.body.textContent; //But there is no body!
var pos = content.search("UNAVAIL-AIRPORT"); // Just an example to search for
因此,我的问题是:

  • 如何捕获该内容
  • 一旦我得到了字符串的位置,我如何在那里滚动并突出显示匹配? 我基本上想重新创建CTRL+F函数
  • 提前谢谢

    var content = ''; $.get('ajax/test.html', function(data) { content = data; }); var内容=“”; $.get('ajax/test.html',函数(数据){ 内容=数据; });
    2-$(content).find()您正在搜索的内容并添加一个类以突出显示

    当您将文本文件作为网页加载到浏览器中时,浏览器会围绕文本创建一个简单的HTML框架:

    <html>
        <head></head>
        <body>
            <pre>[your entire text document here]</pre>
        </body>
    </html>
    
    中添加您喜欢的任何样式,以达到所需的突出显示效果

    请注意,传递到
    highlightText
    中的字符串在正则表达式中使用,因此在将字符串传递到函数(或使函数清理其自身输入)之前,应转义特殊正则表达式字符,如
    $
    ^
    。这一点已在以下方面得到解决:


    如果它是一个网页,怎么会没有正文呢?html文档中总是有正文的。body标记不必存在于标记中,但body元素确实存在。如果您将其作为html提供,它将出现在
    document.body.textContent
    中。我不认为结果(日志本身)是html文档。如果您查看源代码,您会看到完全相同的情况。这就像从浏览器中查看TXT文件一样。脚本将作为bookmarklet注入。@fedxc
    脚本将作为bookmarklet注入。
    --啊哈!这是非常重要的信息,应该编辑成问题。(没有提到您正在编写bookmarklet,大多数人都会认为您有另一个页面,可以通过Ajax或iframe拉入文本文件。)
    find
    在这里不起作用,因为它是纯文本,不是HTML文档
    find
    不会找到任何DOM元素,因为根本没有DOM元素。AJAX是异步的。所有操作都必须在回调函数中完成(即vars声明)。@sp00m您是否反对将声明和
    内容的赋值分离开来?函数没有理由不能引用存在于外部作用域中的变量。回调中的
    内容
    只是引用(并设置)在外部范围中定义的
    内容
    的值。@apsiller它可以,但太混乱了<代码>内容
    在AJAX请求之后(说DOM)不一定会初始化。@sp00m我想我以前误解了你的意思。您的意思是所有使用Ajax调用结果的
    内容的操作都必须在回调内部进行(或由回调触发)?是的,当然,我同意。但是,在某些特殊情况下,您可能仍然使用外部作用域(例如,
    内容
    通过重复的Ajax调用不断设置和重置,并由事件处理程序读取,事件处理程序在事件发生时读取其当前值)。我可以理解这不是那种情况,而且
    内容
    声明也可能包含在回调中。
    
    function highlightText(regexStr) {
        var preTag = document.getElementsByTagName("pre")[0];
        preTag.innerHTML = preTag.innerHTML
                             .replace(new RegExp("("+regexStr+")", "g"),
                                      "<span style='background-color:orange;'>$1</span>");
    }
    
    highlighText("some regex phrase to highlight");
    
    str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");