Javascript не может найти строки, содержащие квадратные скобки - PullRequest
0 голосов
/ 30 августа 2010

Я использую эту функцию, которая помогает моим веб-разработчикам найти фрагмент кода на веб-странице:

function findString (str) {
  var strFound;
  strFound=self.find(str);
  if (strFound && self.getSelection && !self.getSelection().anchorNode ){   
    strFound=self.find(str);
  }
  if (!strFound) {
    strFound=self.find(str,1,1)
    while (self.find(str,1,1)) continue
  }
}

Проблема заключается в том, что при вводе следующей строки, например:

array[1]

Не может найти это!Что странно, потому что я попробовал эту функцию, и она может найти любую другую строку.Итак, как я могу использовать эту функцию, чтобы найти строку, содержащую квадратные скобки (без использования регулярных выражений, если это возможно)?

Спасибо,

С уважением

Ответы [ 2 ]

0 голосов
/ 30 августа 2010

Я попробовал ваш скрипт, и в нем есть ошибка. Если вы замените следующее

if (strFound && self.getSelection && !self.getSelection().anchorNode )  

по следующему

if (strFound && self.getSelection && !self.getSelection().anchorNode )  {

это работает.

В Firefox и Chrome strFound имеет значение true, когда искомая строка является массивом [1]. В IE 8 скрипт не работает.

РЕДАКТИРОВАТЬ: код, который я тестировал:

$(document).ready(function() {
    findString("array[1]");
});

function findString (str) {
    var strFound;
    strFound=self.find(str);
    if (strFound && self.getSelection && !self.getSelection().anchorNode )  {
        strFound=self.find(str);
    }
    if (!strFound) {
        strFound=self.find(str,1,1)
        while (self.find(str,1,1)) continue
    }
    alert(strFound);
 }
0 голосов
/ 30 августа 2010

Какая объектная функция find вызывается? Это окно? Да, это то, что именно делает функция find? Согласно документации это:

Метод find () отображает диалоговое окно поиска при вызове. Это позволяет пользователю искать строку на странице, с которой она была вызвана.

Означает ли это, что токены HTML не обрабатываются, и вы точно ищете массив токенов HTML [1]? В каких браузерах поддерживается эта функция?

Одним из способов поиска на стороне сервера является чтение всего файла (при условии, что вы знаете его местоположение) и выполнение простого регулярного выражения с использованием строковой функции search

...