Test458000 / ReplaceWords

0 stars 1 forks source link

Fix logic #3

Open onikienko opened 5 years ago

onikienko commented 5 years ago

Зараз код оптимізований (окрім того що словник можна обходити один раз і правити body і title в одному циклі)

Але тут є одна велика проблема. Коли ти почнеш використовувати словник з сервера (#2) твоє розширення буде тупо ламати всі сторінки які юзер відкриває. Тому що всі HTML теги <div>, </div> стануть <division>, </division>.

onikienko commented 5 years ago

@Test458000 Прокоментуй, будь ласка, як ти плануєш розв'язати цю проблему

Test458000 commented 5 years ago

Тяжело прокомментировать, так как мне непонятно, зачем в словаре эта конструкция "div": "division"? Если это, например, вражеский код, то можно проверять словарь перед сохранением на наличие тегов. Какая цель у этой конструкции?

Test458000 commented 5 years ago

Я так понял, нужно не допускать изменение имен тегов, если словарь содержит совпадения слов с тегами. Я так думаю, есть 2 варианта:

  1. Проверять слова словаря на совпадение с названиями тегов и выбрасывать те слова, которые совпали - и выдавать алерт.
  2. Второй, сложный. Пока не знаю как делать. Наверное, нужно выделить текст элемента до начала первого дочернего элемента. Нашел метод AdjacentHTML, но он пока ни к селу, ни к городу...
Test458000 commented 5 years ago

В общем, сделаю 2 варианта, сейчас ни один не получается. Как сделаю - сообщу.

Test458000 commented 5 years ago

Сделал вариант 1. Завтра приступлю ко второму варианту.

onikienko commented 5 years ago

Давай поки що з цим почекаємо. Треба #2 закінчити.

onikienko commented 5 years ago

мне непонятно, зачем в словаре эта конструкция "div": "division"?

Щоб швидко тобі продемонструвати, що простий перебор і заміна вихідного тексту сторінки може все зламати. Це було на прикладі div. Можеш собі уявити, що завомник справді захотів замінити div на division на додачу до Russia. Тож не можна проста фільтрувати словник і викидати слова які тобі не подобаються.
І навіть якщо ти прибереш "div" або будь яке слово з твого tagList зі словника, все одно ти можеш зламати сторінку. Тому що будь-яку слово може бути використано в аттрибутах або в середині тега Githubissues.

  • Githubissues is a development platform for aggregating issues.