寻找一种用javascript搜索html页面的方法

时间:2010-12-16 21:45:30

标签: javascript greasemonkey

我想要做的是针对特定字符串的html页面并在其后面读取一定数量的字符,并将这些字符显示在锚标记中。

我遇到的问题是如何在页面中搜索我发现的所有与标签或ID相关的字符串。也希望将它作为我个人使用的油脂单脚本。

function createlinks(srchstart,srchend){
    var page = document.getElementsByTagName('html')[0].innerHTML;

    page = page.substring(srchstart,srchend);

    if (page.search("file','http:") != -1)
    {
        var begin = page.search("file','http:") + 7;
        var end = begin + 79;

        var link = page.substring(begin,end);
        document.body.innerHTML += '<a href="'+link+'">LINK</a> | ';

        createlinks(end+1,page.length);
    }       
};
不幸的是,在找到它再次在文档上循环的链接之后,我想出了什么

2 个答案:

答案 0 :(得分:1)

辅助方向


  1. 查找JavaScript Regex。
  2. 将您的正则表达式应用于页面的HTML(见下文)。
  3. 不同的正则表达式函数执行不同的操作。您可以按照建议在文档中搜索字符串,但是您必须以递归方式执行此操作,因为您要搜索的字符串可能会列在多个位置。


    获取页面中的文本


    • JavaScript:document.getElementsByTagName('html')[0].innerHTML
    • jQuery:$('html').html()

    注意

    1. IE可能要求元素大写(例如'HTML') - 我忘了
    2. 此外,该文档可能包含可能要取出的换行符\n,因为可能在您要查找的字符串之间。

答案 1 :(得分:0)

好的,所以在javascript中你已经在DOM树中得到了整个文档。您通过递归搜索DOM获取所需的字符串来搜索字符串。这是非常明确的;我会输入伪代码,因为你想要考虑你正在使用的库(如果有的话)。

function search(node, string):
    if node.innerHTML contains string
       -- then you found it
    else
       for each child node child of node
           search(child,string)
       rof
    fi