Я использую mark. js (https://markjs.io) для выделения ключевых слов на веб-страницах. У скрипта есть опция, в которой вы указываете ему выделять ключевые слова, которые охватывают разные элементы (опция «через элементы»). Существует также функция "готово", с помощью которой вы получаете количество ключевых слов, отмеченных скриптом.
Допустим, я хотел бы выделить ключевое слово 'word1 word2 word3' .
Если для параметра 'throughElements' установлено значение 'true', сценарий действительно выделит ключевое слово, но будет выдавать три отметки вместо одной. Вы можете выполнить приведенный ниже код, чтобы проверить это.
Если я установлю для параметра «throughElements» значение «false» и уберу теги «» вокруг второго слова, тогда сценарий выделит ключевое слово и сообщить об одной маркировке.
У меня такой вопрос: можно ли указать mark. js сообщать об одиночной маркировке, даже если ключевое слово охватывает несколько элементов (опция 'через элементы' установлено значение 'true')?
Я вижу 'word1 word2 word3' как одно ключевое слово, состоящее из трех слов. Поэтому, естественно, когда совпадение найдено и выделено, я считаю, что лучше считать его как одно, а не три.
Спасибо,
Алекс
var instance = new Mark(document.querySelector("body"));
instance.markRegExp (/word1 word2 word3/i, {
acrossElements: true,
done: function (m) { alert("Number of markings: " + m) }
});
<html>
<head>
<script src="https://cdn.jsdelivr.net/mark.js/8.8.3/mark.min.js"></script>
</head>
<body>
<div>content word1 <b>word2</b> word3 content</div>
</body>
</html>