2015-08-11 2 views
0

Я пытаюсь найти вхождения строки в другой строке, которая была вытащена из документа HTML. Страница представляет собой монитор SNMP, но в прошлом у нас были проблемы с CTRL + F, потому что он только хочет найти строку в текущем окне просмотра браузера. Моя попытка обойти это и не смотреть на вещи вручную - это написать сценарий.JavaScript DOM зависит от вида, вызывающего странные результаты

Проблема заключается в том, что, как представляется, переменная docHTML может хранить столько данных, и все остальное усекается. Я посмотрел вокруг Stack Overflow и обнаружил, что размер строки значительно меньше, чем другие люди пытались, так что это не должно быть проблемой.

Все IP-адреса в переменной «ipArray» существуют на странице в разных местах и ​​находятся в переменной docHTML, когда я просматриваю ее сам. Когда я запускаю функцию doSearch в разных точках страницы (зависит от видового экрана), это дает мне разные результаты.

Я действительно не знаю, что здесь не так, поскольку код действительно работает, а не в другое время. Моя цель состоит в том, чтобы код прошел всю страницу и обнаружил все отсутствующие IP-адреса и добавил их в массив, чтобы мы могли продолжить и добавить их вместо того, чтобы сравнивать 490 IP-адресов в электронной таблице до 490 в утилите мониторинга ,

Заранее благодарен!

var docHTML = document.documentElement.outerHTML; 
var missing = []; 

function doSearch(text) { 
     if (docHTML.search(text) == -1){ 
      missing.push(text); 
     } 
} 

var ipArray = [ 
"192.168.64.236", 
"192.168.64.237", 
"192.168.64.238", 
"192.168.64.10", 
"192.168.64.11", 
"192.168.64.12", 
"192.168.65.40", 
"192.168.65.47" 
]; 

var Total = ipArray.length; 

for(i=0;i<Total;i++){ 
    doSearch(ipArray[i]); 
} 

console.log("Missing IP's: " + (Total - missing.length)); 
console.log(missing); 
+0

Можете ли вы подробнее рассказать об этом? Вы используете этот код при загрузке страницы? – bozzmob

+0

@bozzmob Я запускаю код как букмарклет или через консоль. Я пытаюсь взять вывод HTML и преобразовать его в строку, а затем просмотреть строку для конкретных вхождений других строк, найденных в ipArray. Код работает нормально, но только кажется, что он находит строки, когда они видны через порт представления на странице. Если вы прокрутите вниз код не работает. –

+0

Код выглядит хорошо для меня. Не совсем уверен, почему вы получаете непоследовательные результаты. Теперь я проверяю его с некоторыми данными заглушки. Вернусь к вам. – bozzmob

ответ

0

Код работает так, как планировалось. Проблема заключалась в том, что монитор SNMP работает поверх него. Кажется, что все на странице загружено запросами POST при прокрутке. Кажется, хватало несколько до и после этого, поэтому я смог увидеть это в коде, а не при выполнении.

+0

Удивительный! Вчера я работал над этим довольно долгое время. Это отлично сработало для меня. Но потом я подумал, что есть еще одна проблема w.r.t. разбор или что-то еще. – bozzmob

+0

@bozzmob Да, это было очень странно. Я ценю, что вы тратите время на это! Спасибо! –

0

Вот решение, а не просто изменение, просто настройка вашего заявления о регистрации. Вы печатали «total-missing», что неверно. Нам нужен недостающий подсчет:

var docHTML = document.documentElement.outerHTML; 
var missing = []; 

function doSearch(text) { 
     if (docHTML.search(text) == -1){ 
      missing.push(text); 
     } 
} 

var ipArray = [ 
"69.171.224.11", 
"199.59.149.230", 
"174.121.194.34", 
"209.200.154.225", 
"69.174.244.50", 
"67.201.54.151" 
]; 

var Total = ipArray.length; 

console.log(Total); 

for(i=0;i<Total;i++){ 
    doSearch(ipArray[i]); 
} 

console.log("Missing IP's: " + (missing.length)); /***HERE***/ 
console.log(missing); 

Кроме этого, весь код работал для меня, как ожидалось. Позвольте мне знать, что еще/в чем проблема. Рад был помочь.

+0

Я заметил, что номер был некорректным, но он по-прежнему является содержимым недостающего массива, что для меня не так. Например, если я нахожусь наверху страницы, он даст мне 4 результата в массиве, если я прокручу до середины страницы и заново запустил код, я могу получить 2 результата. –

Смежные вопросы