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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 117 118 119 120 121 122 123 124 125

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

Kspeh

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

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

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

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

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

Всего записей: 1506 | Зарегистр. 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

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

Full 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>

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

Всего записей: 404 | Зарегистр. 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/
и не будет работать если после слова не пробел.

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

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

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

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

Всего записей: 404 | Зарегистр. 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 стилем.

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

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

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

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

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

Full 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-программирование ", " слова с " ];  , только в этом случае вообще ничего не подчёркивает, кроме "надпись".

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

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

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

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

Всего записей: 351 | Зарегистр. 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/

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

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

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

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

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

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

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

Всего записей: 351 | Зарегистр. 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;  
    }  
  });

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

Всего записей: 16424 | Зарегистр. 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  и т.п.)

Всего записей: 351 | Зарегистр. 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

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

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

Всего записей: 351 | Зарегистр. 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 117 118 119 120 121 122 123 124 125

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru