Я создаю надстройку на основе jQuery. Работает нормально! ... пока что
terms
- массив, содержащий слова, которые будут отмечены на сайте. Слова, помеченные как сохраненные в диапазоне со стилем.
При наведении курсора на область отображается всплывающая подсказка.
Это функция для пометки слов:
function mark_terms(callback){
terms.forEach(function(entry) {
$('#tooltipped_area :not(script)').contents().filter(function() {
return this.nodeType === 3;
}).replaceWith(function() {
regex = new RegExp('\\s\\b' + entry + '\\b\\s', "gi");
return this.nodeValue.replace(regex, ' <span class="define" onMouseOver="show_tooltip(this.id)" onMouseOut="clear_timer()" id="' + entry + '">' + entry + '</span> ');
});
callback();
});
}
Пока все отлично работает. Но у меня есть две проблемы:
- Сайт, на котором это работает, содержит несколько кодовых блоков. Например:
#include <Morse.h>
Моим методом ... также можно заменить строку <Morse.h>
, чтобы она была невидимой после замены. Я думаю, потому что это выглядит как "html элемент"
Как я могу это исправить?
Вторая проблема:
<span class="define" onMouseOver="show_tooltip(this.id)" onMouseOut="clear_timer()" id="' + entry + '">' + entry + '</span>
Как временно защитить термин, который будет заменен, что он такой же, как перед послесловиями.
>' + entry + '<
Превращает старое слово, например HelLoWoRld, в HelloWorld. (HelloWorld - это «заголовок», хранящийся в БД, который показан во всплывающей подсказке)
Я бы хотел что-то вроде этого: 1046 *
Понятия не имею. Надеюсь, ты сможешь мне помочь. :) Заранее спасибо.