Ищете способ поиска HTML-страницы с помощью JavaScript - PullRequest
0 голосов
/ 17 декабря 2010

я хотел бы перейти на html-страницу для определенной строки, прочитать после нее определенное количество символов и представить эти символы в теге привязки.

проблема, с которой я столкнулся,выяснить, как искать на странице строку, ко всему, что я нашел, относится по тегу или идентификатору.Кроме того, надеясь сделать его скриптом greasemonkey для моего личного использования.

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 ]

1 голос
/ 17 декабря 2010

Направление помощи


  1. Поиск регулярных выражений JavaScript.
  2. Примените свое регулярное выражение к HTML страницы (см. Ниже).

Различные функции регулярных выражений делают разные вещи. Вы можете найти в документе строку, как и предлагалось, но вам придется делать это рекурсивно, поскольку искомая строка может быть указана в нескольких местах.


Чтобы получить текст на странице


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

Примечание :

  1. IE может потребовать, чтобы элемент был написан с большой буквы (например, HTML) - я забыл
  2. Кроме того, в документе могут быть символы новой строки \n, которые, возможно, захотят убрать, поскольку они могут находиться между искомой строкой.
0 голосов
/ 17 декабря 2010

Хорошо, поэтому в 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
...