Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Открыть новую тему     Написать ответ в эту тему

Kspeh

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
расширения в современном браузере - почти одно и то же.
какие то специальные права в системе при этом не требуются.

- требуются. Я захожу в магазин расширений и у меня надпись "запрещено устанавливать вашим администратором". Захожу на сайт с закладурками и просто перетаскиваю себе на панель закладок.

Всего записей: 357 | Зарегистр. 17-11-2015 | Отправлено: 07:46 17-02-2023
D1D1D1D

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kspeh
 
В сети наверняка есть закладурки, подсвечивающие заданный текст. См. "Bookmarklet Highlight text"
 
Добавлено:
Mavrikii
 
Получилось таким способом: в базе прописал тег вместо пустой ячейки — "c":"<emp>", а в стилях его скрыл

Всего записей: 1368 | Зарегистр. 05-04-2010 | Отправлено: 12:53 17-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kspeh
https://github.com/RedAndBlueEraser/highlight-text-bookmarklet
или https://gist.github.com/agibsonsw/a993c14ee172dfeb4d96
можно изменить, чтобы выбирало из списка нужных слов, а не то, что выбрано на странице.
https://stackoverflow.com/questions/48004396/highlight-words-in-particular-class-using-js-array

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 23:20 17-02-2023 | Исправлено: Mavrikii, 23:22 17-02-2023
Kspeh

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В сети наверняка есть закладурки, подсвечивающие заданный текст.

Не нашёл, поэтому спросил здесь. Если знаете - дайте, пожалуйста, ссылку.
Mavrikii
Первые два не подходят, потому как там каждый раз нужно выделять слова и они их будут подсвечивать, а третий скрипт - похоже самое то. Но он у меня почему-то не работает:
 
javascript: (function() {var cars = ["наверняка", "javascript", "Member", "надпись"];
var classes = document.getElementsByClassName("highlighed");
Array.prototype.slice.call(document.getElementsByClassName("highlighed")).forEach(function(item) {
  var getText = item.innerHTML.trim().split(' ');
  getText.forEach(function(item2, index) {
    if (cars.indexOf(item2) > -1) {
      getText[index] = "<span class='lightText'>" + item2 + "</span>"
    }
  });
  item.innerHTML = getText.join(' ');
})
 
Может скобки какой не хватает?
 
Добавлено:
Там есть ещё вот это:

Код:
.lightText {
  color: green;
}

и это:

Код:
<p class="highlighed">How are you when</p>
<p>How are you</p>

Но я не понял куда вставить.

Всего записей: 357 | Зарегистр. 17-11-2015 | Отправлено: 08:19 20-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kspeh
это не есть хорошее решение, так как создаст кучу проблем - например если цепляются какие то обработчики событий, то их просто снесет.

Код:
javascript: (function() {var cars = ["наверняка", "javascript", "Member", "надпись"];
  var getText = document.body.innerHTML.trim().split(' ');
  getText.forEach(function(item2, index) {
    if (cars.indexOf(item2) > -1) {
      getText[index] = "<mark>" + item2 + "</mark>"
    }
  });
  document.body.innerHTML = getText.join(' ');
})();

https://jsfiddle.net/grt4ev02/1/
и не будет работать если после слова не пробел.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 08:33 20-02-2023 | Исправлено: Mavrikii, 08:34 20-02-2023
Kspeh

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii ещё раз спасибо.  
Я так понял, надпись красится здесь:
 

Код:
getText[index] = "<mark>" + item2 + "</mark>"

 
Можно ли задать другой цвет? И фона тоже? И ещё хорошо бы размер шрифта. Чтобы сразу заметно было, как зайдёшь на страницу.

Всего записей: 357 | Зарегистр. 17-11-2015 | Отправлено: 08:43 20-02-2023 | Исправлено: Kspeh, 08:46 20-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kspeh

Цитата:
Можно ли задать другой цвет?

 

Код:
"<span style='color:green'>" + item2 + "</span>"

 

Цитата:
И фона тоже? И ещё хорошо бы размер шрифта.  

там же, css стилем.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 08:44 20-02-2023 | Исправлено: Mavrikii, 09:19 20-02-2023
Kspeh

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii почему-то не выделяется то, что жирным шрифтом на странице. Например - никнеймы.

Всего записей: 357 | Зарегистр. 17-11-2015 | Отправлено: 09:40 20-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kspeh
потому что сказал, что работает только если слова с пробелами вокруг.
<b>слово</b> - нет пробелов.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 09:55 20-02-2023
Kspeh

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii нет, что-то не то. Скрипт не только ник не выделяет, но и другие. В общем, у меня из этого списка выделяет только вот эти слова:
 

Код:
javascript: (function() {var cars = [ "Kspeh", "javascript", "Platinum Member", "надпись", "Web-программирование", "слова с"];
  var getText = document.body.innerHTML.trim().split(' ');
  getText.forEach(function(item2, index) {
    if (cars.indexOf(item2) > -1) {
      getText[index] = "<span style='color:red; background-color:yellow'>" + "<strong>" + item2 + "</strong>" + "</span>"
    }
  });
  document.body.innerHTML = getText.join(' ');
})();

Пробелы у меня сейчас вообще почти везде: [ " Kspeh " , " javascript ", " Platinum Member " , "надпись", " Web-программирование ", " слова с " ];  , только в этом случае вообще ничего не подчёркивает, кроме "надпись".

Всего записей: 357 | Зарегистр. 17-11-2015 | Отправлено: 10:34 20-02-2023 | Исправлено: Kspeh, 10:39 20-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kspeh
пробелы не там. а в тексте страницы.
document.body.innerHTML.trim().split(' ');
берет весь html код и разбивает по пробелам. это все неправильно, нельзя так делать.
если у вас будет слово в коде без пробелов, оно не будет выделено.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 10:57 20-02-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
На сайте есть система комментирования. Для ответа на комментарий используется вот такая форма: https://ibb.co/TbzDq65
 
Для вызова этой формы разработчик сделал скрипт  
Подробнее...  
 
Здесь фраза "Написать ответ..." жестко забита и выводится в форму.  
 
Можно изменить скрипт так, чтобы вместо прямого вывода этой фразы, вызывать специально созданный файл с именем write.php, который бы генерировал другой текст для этой формы?
 
(В файле write.php я бы сделал обращение к базе и вынимал бы из нее имя того, кому адресован этот ответ, время и другую инфу, которую показывал бы вместо фразы "Написать ответ...").
 
 
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 22:23 27-02-2023 | Исправлено: Vladsvn, 22:24 27-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Можно изменить скрипт так, чтобы вместо прямого вывода этой фразы, вызывать специально созданный файл с именем write.php, который бы генерировал другой текст для этой формы?

можно, но смысл? читайте, что такое AJAX запрос.
с jQuery это проще, например, через https://api.jquery.com/jquery.get/

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 01:49 28-02-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
можно, но смысл?
Смыл для меня очень большой: когда все отлажено и работает, то выгоднее эту небольшую доработку выполнить неоптимальным образом, но ничего другого не затрагивая.  
 
Поэтому хотелось бы, все же, решить эту проблему таким образом, как я спросил.
 
Как бы это сделать?  

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 09:22 28-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Я же спросил - jQuery есть?

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 09:34 28-02-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
jQuery нет.

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 09:54 28-02-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
jQuery нет.

ну, ок.. писать AJAX код под старый js ломает, в новой версии  
https://developer.mozilla.org/ru/docs/Web/API/Fetch_API/Using_Fetch
когда ответ получен, в том месте и делаете вывод нужной вам формы.
то есть вызываете ваш код внутри  
    if (e.target.closest(".comment__action")) {
с полученными данными от сервера. минус - будет задержка после клика.
 

Код:
  document.querySelector("body").addEventListener("click", e => {  
    if (e.target.closest(".comment__action")) {
 
     fetch('http://example.com/script.php')
     .then((response) => response.text())
     .then((text) => {
      var parent = e.target.closest(".comment");  
      var child = parent.querySelector('.comment__expand-branch');
      var parent_id = parent.dataset.id;  
      var level = parent.dataset.level;  
      var next = parent.dataset.next;  
         
      comment_form_data_reply.value = parent_id;  
      comment_form_data_level.value = level;
      comment_form_data_next.value = next;
 
      child.after(comment_form);
       
      comment_placeholder.textContent = text;
      comment_input_message.innerHTML = "";
      document.getElementById('commentAlert').textContent ='';
 
      if (user_id !== 0) {
        comment_input_message.focus();
      }
      comment_input_box.classList.add('thesis--empty');        
      comment_send_button.classList.add('v-button--disabled');
      comment_send_button_text.textContent = "Отправить";  
      comment_send_button.setAttribute("onclick", "b();");
           
      comment_cancel.innerHTML = "<div onclick=\"q("+parent_id+");\">Цитировать</div><div data-name=\"cancel\" onclick=\"a(true, false);\">Отмена</div>";
     });
      e.stopPropagation(); e.preventDefault();        
      return false;  
    }  
  });

как то так, не проверял.

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 23:54 28-02-2023 | Исправлено: Mavrikii, 23:58 28-02-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу сделать всплывающее по клику сообщение, в котором через Ajax из РНР файла будет извлекаться и показываться код вот такого типа:
 
<div class="popup_uv_2">
<div class="item_uv_1"><div class="avatar__bg"><img src="/88.jpg" style="width: 100%; height: auto;"></div></div>
<div class="item_uv_2"><p><a href="/profile/face.php?kto=88&6018864">Вера</a> поставила лайк на Вашу статью <a href="/svetofor/27?8388607"/>Я приехал в Гарвард</a> </p></div>
<div class="item_uv_3"><p style="color: black;"> 1 </p></div>
</div>
 
Пока что ничего у меня не получается, и возникает вопрос: а вообще, в принципе, такое возможно?
 
(без jQuery  и т.п.)

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 11:35 25-03-2023
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
а вообще, в принципе, такое возможно?

да, если php на том же сервере.
jQuery не делает ничего, что не умеет чистый js.
но в современном js и того проще
https://developer.mozilla.org/ru/docs/Web/API/Fetch_API/Using_Fetch

Всего записей: 15117 | Зарегистр. 20-09-2014 | Отправлено: 11:51 25-03-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мне представлялось, что Fetch просто вытащит из РНР файла любой НТМЛ код, после чего этот код воспроизведется в браузере обычным образом. Любой код - со ссылками, со стилями, с графикой, с CSS.  
 
Но судя по примерам из сети, это совершенно не гибкий метод - для воспроизведения конкретной графики пишется специальный код, а если таких секций, как в моем примере, будет много, то это вообще трудно разрешимая задача.
 

Всего записей: 342 | Зарегистр. 07-09-2016 | Отправлено: 12:28 25-03-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru