#javascript #regex #email #xpath #google-chrome-extension
Вопрос:
Я создаю расширение Chrome, которое должно иметь возможность извлекать любой адрес электронной почты, указанный на фоновой странице.
Я обнаружил, что использование регулярного выражения для сканирования всего документа является очень дорогостоящей операцией, и веб-сайт выходит из строя.
Почему я сканирую весь документ целиком?
Помните, что расширение работает поверх веб-сайтов, которые я не создавал, поэтому я не знаю, куда разработчик отправил электронное письмо. Это может быть на бирке или на
метка, или в … вариантов бесконечное множество. Поэтому я не могу выполнить простой document.getElementsByTagName() или любой подобный запрос.
Один из способов, которым я думал о снижении операционных затрат, состоял в том, чтобы определить, в каком HTML-теге находится электронное письмо(ы). Я подумал о том, чтобы использовать Xpath и выбрать все узлы с текстом, содержащим»@», поскольку » @ » — это символ, который есть во всех электронных письмах… затем мне нужно только сравнить текстовое содержимое этих узлов с моим регулярным выражением электронной почты, чтобы увидеть, есть ли совпадение.
Тем не менее, когда я использую
Xpath = //текст()[содержит(.,’@’)]
или любой вариант этого выражения, я получаю не только узлы с видимым текстом, содержащим»@», но и узлы, в которых скрыта информация, содержащая @.
Боттонная линия, операция по-прежнему очень дорогостоящая и приводит к сбою фоновых страниц.
Я использовал эту процедуру для получения телефонных номеров, и она работает просто отлично. Я полагаю, это связано с тем, что сканирование числовых значений не так дорого, поскольку 99% содержимого веб-сайта-это буквы.
Правильно ли я думаю о том, как подойти к этому? У кого-нибудь есть лучшая альтернатива?