
Есть ли способ учитывать регистр при поиске страниц в Google Chrome?
Допустим, я ищу "Дерево" и хочу исключить все варианты, такие как "дерево" или "ДЕРЕВО", которые не соответствуют искомому случаю. Возможно ли это?
решение1
TL;DR (по состоянию на февраль 2022 г.):
Еще нет, нов конце концов.
По состоянию на 2022 год функция поиска на странице с учетом регистра существует в Chrome с 2018 года, но Google до сих пор не представила эту функцию в пользовательском интерфейсе.
График
По состоянию на 6 апреля 2011 года этозапрос функциис Chromium (базой открытого исходного кода Chrome) былотклоненный:
2011-04-06: jeff****@google.com
Обсуждалось с руководителями отдела пользовательского интерфейса: Было бы неплохо это сделать, но на данный момент мы не готовы добавлять эти опции в пользовательский интерфейс.
В 2017 годувопрос был повторно открыт как вопрос 687552, и по состоянию на первый квартал 2022 года этот вопрос все еще остается открытым.
В 2018 году в базовый движок Blink была добавлена поддержка поиска на странице с учетом регистра.(вместе с другими опциями, такими как «совпадение со всем словом»). Но эта функциональность по-прежнему не представлена в собственном пользовательском интерфейсе Chrome.
По состоянию на 31 января 2022 года мы все еще ждем, когда Google назначит команду UI/UX для разработки и внедрения изменений во всплывающее окно «Найти на странице» для поддержки этих опций.
решение2
TheИнструменты разработчикаокно в браузерах на базе Chromium (Chrome, Edge, Opera,и так далее) поддерживает поиск с учетом регистра (и регулярные выражения тоже!):
Чтобы открыть инструменты разработчика для текущей вкладки браузера:
- В Windows просто нажмите F12один раз.
- Для платформ, отличных от Windows, или если F12он недоступен, вы можете использовать Ctrl+ Shift+ I
(этоверхний регистр-глаз, нестрочная-ell)
Начиная с Chrome 97 (февраль 2022 г.) вы можете выполнять поиск в текущем документе с помощью инструментов разработчика тремя различными способами:
1: Используйте панель «Поиск»
- (На мой взгляд, эту функцию лучше было бы назвать «Поиск во всех файлах»).
- Сначала откройте окно «Инструменты разработчика» ( F12или Ctrl+ Shift+ I)
- Затем из окна «Инструменты разработчика» его можно открыть двумя способами:
- Метод 1: На любой вкладке нажмите клавишу Escape, чтобы открыть панель консоли, затем нажмите на три точки, чтобы открытьБольше инструментовменю, затем выберите «Поиск»:
- Метод 2: Нажмите на меню в правом верхнем углу, выберитеБольше инструментови выберите «Поиск»:
- Метод 1: На любой вкладке нажмите клавишу Escape, чтобы открыть панель консоли, затем нажмите на три точки, чтобы открытьБольше инструментовменю, затем выберите «Поиск»:
- После открытия используйте кнопки вокруг текстового поля поиска, чтобы включить или отключить чувствительность к регистру и режим регулярных выражений.
- Однако использование этого подхода имеет и недостатки:
- Этот инструмент ищет исходный текст в исходном текстевсе файлыиспользуемые текущей страницей, включая другие файлы HTML,
.js
исходный код JavaScript, текст стилей CSS.css
и т. д.), поэтому поиск по термину типа «var» или «title» даст много нерелевантных результатов.- К счастью, результаты сгруппированы по файлам, поэтому просто мысленно отфильтруйте результаты поиска, не соответствующие HTML.
- Результаты поиска будут соответствовать исходному источнику файла HTML или JS, а не текущему представлению HTML DOM, поэтому этот подход бесполезен для поиска так называемыходностраничные приложения(SPA), поскольку исходный HTML-код представляет собой всего лишь заглушку-загрузчик и не будет содержать текстовое содержимое текущей страницы.
- Поскольку поиск выполняется по текстовому источнику, а не по живому DOM, это также означает, что вы не можете дважды щелкнуть результат поиска, чтобы заставить главное окно браузера перейти к выбранному элементу. Вместо этого двойной щелчок по результату покажет вам содержимое в Developer ToolИсточникивкладка вместо вкладки «Элементы».
- Этот инструмент ищет исходный текст в исходном текстевсе файлыиспользуемые текущей страницей, включая другие файлы HTML,
2: Поиск исходного кода HTML:
- Хотя функция Chrome «Просмотр исходного кода...» позволяет использовать Ctrl+ Fдля поиска по исходному исходному HTML-коду, в ней по-прежнему отсутствуют необходимые нам параметры поиска с учетом регистра и регулярных выражений.
- Однако окно «Инструменты разработчика»ИсточникиПанель имеет свою собственную отдельную функцию поиска, CtrlкотораяFделаетподдержка режимов чувствительности к регистру и регулярных выражений.
- Как и в случае с панелью поиска, здесь не выполняется поиск по текущемужитьДерево DOM, поэтому этот подход не будет работать для веб-страниц, где исходный HTML сильно отличается от реального DOM, отображаемого на вкладке «Элементы», например, для одностраничных приложений.
3: Поиск в реальном времени по DOM (с XPath, чувствительным к регистру):
Поиск Live DOM поддерживает только текстовый поиск без учета регистра...
...но он также поддерживает запросы XPath с учетом регистра:
вЭлементывкладку, нажмите Ctrl+ F. Это позволяет выполнить поиск по всему тексту DOM документа (включая атрибуты HTML).
Поскольку поиск выполняется в активном DOM, он работает с веб-страницами SPA и другими страницами с большим количеством скриптов.
Поле поиска имеет 3 режима:
- Текстовый поиск (к сожалению, он нечувствителен к регистру)
- Поиск селектора CSS (поддерживает селекторы с учетом и без учета регистра, но только для имен элементов HTML)и атрибуты: вы не можете использовать селектор CSS для сопоставления текста DOM).
- Для выполнения поиска атрибутов HTML с учетом регистра используйте
elementName[attributeName="value"s]
. - Для выполнения поиска по атрибутам HTML без учета регистра используйте
elementName[attributeName="value"i]
.
- Для выполнения поиска атрибутов HTML с учетом регистра используйте
- Режим XPath(который поддерживает поиск с учетом регистра).
- Запросы XPath чувствительны к регистру, и вы можете использовать некоторые функции XPath для выполнения поиска без учета регистра.
- Вы можете использовать любой запрос XPath. Например, попробуйте использовать
//*[contains(text(),'Developer Tools')]
(как на скриншоте выше). - Если вы не получили ожидаемых результатов, вы можете протестировать запрос XPath с помощью
$x()
функции, встроенной в консоль инструментов разработчика, например$x("//*[contains(text(),'Developer Tools')]")
(как показано на снимке экрана выше).
Однако, начиная с Chrome 97он по-прежнему не поддерживает чувствительность к регистру и регулярные выражениядля текстового поиска, что в значительной степени сводит на нет смысл использования этого подхода, если только вы не хотите изучать XPath, но я упоминаю об этом на тот случай, если Google действительно добавит параметры чувствительности к регистру в будущем... может быть... в конечном итоге... когда-нибудь, я надеюсь.
Еще одним преимуществом этого подхода является то, что вы можете напрямую перейти к результатам поиска в исходной вкладке веб-браузера, просто дважды щелкнув узел элемента, содержащий нужный вам текст. Это невозможно с вышеупомянутыми подходами к поиску исходного текста.
Сравнение:
Опция с учетом регистра | Целое слово | Режим регулярных выражений | Режим XPath | SPA-совместимый | |
---|---|---|---|---|---|
Ctrl+F на веб-странице | Нет | Нет | Нет | Нет | Да |
Просмотреть исходный код > Ctrl+F | Нет | Нет | Нет | Нет | Нет |
Инструменты разработчика > Поиск | Да | Нет | Да | Нет | Нет |
Инструменты разработчика > Элементы > Ctrl+F | Только с XPath | Нет | Нет | Да | Да |
Инструменты разработчика > Источники > Ctrl+F | Да | Нет | Да | Нет | Нет |
решение3
Вот функция, которая запрашивает слово и выполняет поиск с учетом регистра:
var searches = searches || 0;
(function () {
var count = 0,
text;
text = prompt('Search:', '');
if (text == null || text.length === 0) return;
function searchWithinNode(node, re) {
var pos, skip, acronym, middlebit, endbit, middleclone;
skip = 0;
if (node.nodeType === 3) {
pos = node.data.search(re);
if (pos >= 0) {
acronym = document.createElement('ACRONYM');
acronym.title = 'Search ' + (searches + 1) + ': ' + re.toString();
acronym.style.backgroundColor = backColor;
acronym.style.borderTop = '1px solid ' + borderColor;
acronym.style.borderBottom = '1px solid ' + borderColor;
acronym.style.fontWeight = 'bold';
acronym.style.color = borderColor;
middlebit = node.splitText(pos);
endbit = middlebit.splitText(RegExp.lastMatch.length);
middleclone = middlebit.cloneNode(true);
acronym.appendChild(middleclone);
middlebit.parentNode.replaceChild(acronym, middlebit);
count++;
skip = 1;
}
} else if (node.nodeType == 1 && node.childNodes && node.tagName.toUpperCase() != 'SCRIPT' && node.tagName.toUpperCase != 'STYLE') for (var child = 0; child < node.childNodes.length; ++child) child = child + searchWithinNode(node.childNodes[child], re);
return skip;
}
var borderColor = '#' + (searches + 8).toString(2).substr(-3).replace(/0/g, '3').replace(/1/g, '6');
var backColor = borderColor.replace(/3/g, 'c').replace(/6/g, 'f');
if (searches % 16 / 8 >= 1) {
var tempColor = borderColor;
borderColor = backColor;
backColor = tempColor;
}
searchWithinNode(document.body, text);
window.status = 'Found ' + count + ' match' + (count == 1 ? '' : 'es') + ' for ' + text + '.';
if (count > 0) searches++;
})();
Его можно сохранить как закладку для удобства доступа.
Рекомендации
решение4
Вы можете использоватьНайти и заменить для редактирования текстаилиfind+ | Инструмент поиска на странице с регулярными выражениями,ГитхабилиFindRрасширения для поиска с учетом регистра в Chrome.
Его можно легко открыть с помощью любой комбинации клавиш, которую вы предпочитаете. Также вы можете делать RegEx, поиск по целому слову, находить и заменять текст и т. д. и т. п.