Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 117

Цикл: Подскажите, как заставить при повторе заново загружать инфу с text.php, а не повторять старую?

18.07.2020, 10:31. Показов 789. Ответов 10

Студворк — интернет-сервис помощи студентам
Доброго времени суток! Скрипт должен читать текст из внешнего фаила text.php. Текст в этом фаиле постоянно меняется, поэтому при прочтении текста из фаила один раз, далее необходимо заново загрузить текст и опять его читать и так бесконечно.

Сейчас скрипт только один раз загружает текст и его повторяет бесконечно, не учитывая изменения во внешнем фаиле. Просьба подсказать как заставить при повторе заново загружать инфу с text.php, а не повторять старую.

Заранее спасибо!

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
 
var xhr = new XMLHttpRequest();   
    
for (let i = 0; i < 3; i++) {
    
xhr.open('POST', 'text.php', false);
xhr.send();
 
speechSynthesis.speak(new SpeechSynthesisUtterance(xhr.responseText));
 
}
 
 
</script>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.07.2020, 10:31
Ответы с готовыми решениями:

Подскажите как добавить в цикл, что-бы не повторять код. Почему-то при любом варианте ругается
&lt;java&gt; private static String getTagValue(String tag, Element element) { NodeList nodeList =...

Как в Box2d заставить тело повторять рельеф карты, но при этом не падать на бок
Всем привет! Хочу написать платформер с физикой Box2d. У меня есть перонаж - прямоугольник, который наклоняется в зависимости от рельефа...

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

10
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
18.07.2020, 14:10
Для этого достаточно цикл for заменить на setInterval(), который читает из файла обновлённый текст с периодичностью, с которой происходит обновление текста в файле text.php, на пример 5 сек:
JavaScript
1
2
3
4
5
6
var xhr = new XMLHttpRequest();
setInterval(function(){
    xhr.open('POST', 'text.php', false);
    xhr.send();
    speechSynthesis.speak(new SpeechSynthesisUtterance(xhr.responseText));
}, 5000);
так как цикл for читает из файла 3 раза почти одновременно, а произносит по очереди фактически одно и то же.
2
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 117
18.07.2020, 22:30  [ТС]
Спасибо, а как сейчас это все остановить по нажатию кнопки и при повторном нажатии заново запустить? clearInterval не срабатывает.


PHP
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
<script>
 
var BGM=document.getElementById("bgm");
function btnBGM() {
 
if (document.getElementById("bgmOn").classList.contains("hidden")) {
    
document.getElementById("bgmOn").classList.remove("hidden");
document.getElementById("bgmOff").classList.add("hidden");
    
var xhr = new XMLHttpRequest();     
var intervalID = setInterval(function(){
    
 xhr.open('GET', 'text.php', false);
 xhr.send();
 var news =  xhr.responseText ;
 
  var recognizer = new webkitSpeechRecognition();
  recognizer.lang = 'ru-Ru';
  var synth = window.speechSynthesis;
  var utterance = new SpeechSynthesisUtterance(news);
  synth.speak (utterance);  
    
}, 5000);   
    
    
} else {
 
clearInterval(intervalID);
 
document.getElementById("bgmOff").classList.remove("hidden");
document.getElementById("bgmOn").classList.add("hidden");
 
 
 
}
}
</script>
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
18.07.2020, 23:58
В 12 строке уберите var, пусть это будет глобальная функция:
JavaScript
1
intervalID = setInterval(function(){
0
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 117
19.07.2020, 00:45  [ТС]
Да, так получается. Однако необходимо немедленно прерывать чтение по нажатию кнопки, а так прерывает только по завершению итерации. Как можно оборвать чтение сразу?
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
19.07.2020, 00:54
Это пока трудно сказать, нужно изучать полное описание webkitSpeechRecognition(), дело тут не только в clearInterval().
1
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 117
19.07.2020, 10:38  [ТС]
Получилось так:

PHP
1
2
3
4
<script>
var synth = window.speechSynthesis; 
synth.cancel();
</script>
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
19.07.2020, 12:43
Замечательно, ещё, оказывется, желательно это вставлять в закрытие/обновление страницы, иначе даже после этого прерывает только по завершению итерации:
HTML5
1
<body onunload="synth.cancel()">
0
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 117
21.07.2020, 20:25  [ТС]
Что то не совсем понял как это сделать? Не просто же вставить в <body>?
0
Юзер с абсолютным слухом
 Аватар для Опан
709 / 489 / 195
Регистрация: 17.12.2010
Сообщений: 1,428
21.07.2020, 22:14
Попробуйте. Я так написал потому, что это у меня действительно работает, по крайней мере в хроме. Но когда я попытался synth.cancel() заменить на
HTML5
1
<body onunload="alert('вы действительно хотите меня закрыть?')">
то это не сработало. странно, но факт.
0
0 / 0 / 0
Регистрация: 18.04.2013
Сообщений: 117
21.07.2020, 22:20  [ТС]
В Яндекс браузере не работает совсем.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2020, 22:20
Помогаю со студенческими работами здесь

Подскажите как выудить инфу с расширения php
Есть файлы на другом сервере даже не знаю что за сервак. Кароче дело в том что мне нужно как то выудить инфу с раширения файла php ну...

Как заставить повторять действие несколько раз
&lt;html&gt; &lt;head&gt; &lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;&gt; &lt;style&gt; body { font-family: Verdana; ...

Как заставить цикл, создать массив три раза PHP
Например $n=3, то массив должен быть от 0 до 2 и должен иметь три массива (с разными цифрами) тоже от 0до 2.

Как заставить программу загружать картинку рандомно?
Есть некое количество картинок в нескольких папках (все в одной коренной папке). Как заставить программу при старте загружать в...

Как повторять цикл if, пока не будет выполнено необходимое условие
case &quot;старт&quot;: Console.WriteLine(&quot;Ну что ж приступим!&quot;); Console.WriteLine(&quot;Твоё...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru