Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как запустить скрипт без перезагрузки окна? (https://javascript.ru/forum/events/80489-kak-zapustit-skript-bez-perezagruzki-okna.html)

Vifh 11.06.2020 14:40

Как запустить скрипт без перезагрузки окна?
 
Добрый день. Пишу сайт на Django фрэймворке Python. Спецы по этим продуктам рекомендуют обратиться к вам - спецам по JS с моей проблемой.
На странице строятся графики с помощью Google Charts. Отладка идет на web-сервере Django.
Если вызвать страницу с графиком по адресу http://127.0.0.1/charts то генерация графиков на странице происходит нормально, правильно.
Но сделал вызов этой страницы с графиками с другой страницы через меню. Страница появляется, но графики не появлются. Но если же сделать рефреш таблицы в браузере, то графики уже появлются - все отрабатывает.
Скрипт, в котором находится function drawChart(), не отрабатывает при вызове страницы с другой страницы, но отрабатывается после рефреша страницы.
Очень прошу помочь.

Код генерируемой HTML-страницы:

<!DOCTYPE html>
<html>
    <head>
		<script type="text/javascript" src="//www.gstatic.com/charts/loader.js"></script>
		<script type="text/javascript">
		  google.charts.load('current', {'packages':['corechart']});
		  google.charts.setOnLoadCallback(drawChart);

		  function drawChart() {
		  ...
		  }

		  var chart = new google.visualization.LineChart(document.getElementById('fh_chart'));
			  
		</script>
	</head>

	<body>
	   <div class="menu">
			<a href="/">Главная</a>
			<a href="/charts/">Температура</a>
		</div>
		<div id="fh_chart" style="width: 900px; height: 500px"></div>

		</div>
	</body>
</html>

Vifh 11.06.2020 18:00

Спасибо за ответ! Когда я готовил код к публикации здесь, то удалял "мусор", переставлял что-то для упрощения и неправильно вставил строку 13. Виноват...
Вот так выглядит оригинальный код:

function drawChart() {
			...
			var chart = new google.visualization.LineChart(document.getElementById('fh_chart'));
			chart.draw(data, options);
		  }


В начале скрипта есть alert(), я его специально привел. Он срабатывает именно после перезагрузки окна и графики все правильно рисуются. Сам скрипт не могу запустить при первой загрузке.

Vifh 11.06.2020 18:17

Вот что в консоли после появления страницы после вызова ее из меню на предыдущей странице:

XHR finished loading: GET "http://127.0.0.1:8000/charts/".
send @ VM23 jquery-latest.js:9631
ajax @ VM23 jquery-latest.js:9176
a.mobile.loadPage @ VM24 jquery.mobile-1.3.2.min.js:3
a.mobile.changePage @ VM24 jquery.mobile-1.3.2.min.js:3
(anonymous) @ VM24 jquery.mobile-1.3.2.min.js:3
dispatch @ VM23 jquery-latest.js:4641
elemData.handle @ VM23 jquery-latest.js:4309
[/i]

Эти библиотеки я запрашиваю.

А потом после рефреша этой же страницы:

Navigated to http://127.0.0.1:8000/charts/

И со второго раза отрабатывает скрипт который содержит function drawChart() и графики появляются

Nexus 11.06.2020 19:47

Цитата:

Сообщение от Vifh
Страница появляется, но графики не появлются. Но если же сделать рефреш таблицы в браузере, то графики уже появлются

Переход со страницы на страницу происходит асинхронно?

Скорее всего у вас либо ресурсы не подгружаются, либо callback-функция не вызывается.

Vifh 13.06.2020 18:57

Цитата:

Сообщение от Rise (Сообщение 525709)
Опять же, куда-то привел, но не сюда, иди проспись.

"Профессор" Rise, Кто тебе дал право так со мной разговаривать? Куда-куда это мне идти??? Это же грубое нарушение правил участия в форуме, про твою этику я уже не говорю. Впрочем, плевать тебе на это. Я, кстати, в переписке к тебе на ВЫ обращался!
Называется - нашел помощь на форуме...
Ну и ладно.

Nexus, - спасибо за ответ. Вы правы - дело в callback, я понимал это сразу. Просто, задачка у меня совсем небольшая была - показать на странице некоторые данные для своих личных целей. Хватало азов HTML и JS. Я разберусь. Спасибо Вам!

laimas 15.06.2020 12:09

Цитата:

Сообщение от Rise
Врёт и не краснеет

Зато как "заиграла" после баталий тема - читается сразу то, что подчеркнуто, кусочек заголовка и последний комментатор - Как запустить скрипт без ... Rise. :D


Часовой пояс GMT +3, время: 07:42.