Не работают js-скрипты на сайте

голоса: 0
Есть отдельный js-файл, содержащий несколько скриптов, и ссылки на него на разных страницах. Иногда все прокатывает, иногда, чаще после сохранения изменений, страницы со ссылками просто перестают его видеть. Редактировал файл и в открывающемся при нажатии на него в файловом менеджере новом окне, и по ссылке на редактирование во вкладке в самом браузере (Мозилла)... Обновлял... Закрывал... Перезагружал...
| Автор: | Категория: JavaScript

Ответов: 1

Голоса: +1
 
Лучший ответ
Прочтите ваш вопрос и описание. Кажется только вы поняли о чем речь так как примеров вы не привели.
| Автор:
Выбор ответа лучшим | | Автор: pv.perm

Доброго дня, спаситель! Понял что? Есть ссылка, типа "<font id="имя скрипта">загрузка</font><script src="адрес скрипта.js"></script>", на скрипт, в файле скрипта такой код: "window.addEventListener("DOMContentLoaded", function() {
document.getElementById("имя скрипта").innerHTML = 'текст</font>) <a title="подробнее" href="адрес" target="_blank"><b>?</b></a>,';} );" Вылазит "загрузка" - и... всё... Пока нашел вариант с открытием в новом приватном окне - там все фурычит. За "спасителя" - не прикол: уже не один год помогаете, просто давно не обращался, забурел, начал малость шарить;)...

pv.perm,

У вас в коде проблема в том, что внутри innerHTML вставляется лишний закрывающий тег </font>). Из-за этого браузер рвёт разметку, и дальше ничего не отображается. В приватном окне скрипт работает, потому что там нет кеша и расширений, которые могут блокировать загрузку.

Что нужно сделать:

  • Использовать нормальный контейнер (например, <span>), а не <font>.

  • Убрать из строки innerHTML лишние закрывающие теги.

  • Подключать скрипт с атрибутом defer или ставить тег <script> после контейнера.

  • Очистить кеш (или добавить к ссылке на скрипт ?v=1, при обновлениях менять число).

  • Если стоит AdBlock или подобные расширения, они могут блокировать скрипт. Временно отключите их или добавьте сайт в исключения.

Пример исправленного варианта:

<span id="script_placeholder">загрузка…</span>
<script defer src="script.js?v=1"></script>

script.js

document.addEventListener('DOMContentLoaded', function () {
  const el = document.getElementById('script_placeholder');
  if (!el) return;

  el.textContent = ''; // очищаем "загрузка"
  el.append('текст ');

  const a = document.createElement('a');
  a.title = 'подробнее';
  a.href = 'адрес';
  a.target = '_blank';

  const b = document.createElement('b');
  b.textContent = '?';
  a.appendChild(b);

  el.appendChild(a);
});

примерно так.

Yuri_Geruk,

И правда, что, косяк: = 'текст</font>) - надо посмотреть самые первые эти скрипты, видимо, при редактировании накосячил и не заметил: думаю, быстрее получится, чем в абсолютно другой код вникать, я вообще слабоват в скриптах... Спасибо большое и простите за долгое молчание: не до сайта было...

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

Да, мой косяк - при переносе кода в вопрос неправильно удалил лишний текст, в коде на сайте все ровно: innerHTML = 'текст (<font color="green">текст 2</font>),';

Думаю, проблема в частом редактировании файла со скриптом после его выкладки: потом, через полдня/сутки, все проходит и работает самая последняя редакция...

...