如何使用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
因此,我的问题是:
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");