Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.04.2017, 11:30
Интересующийся
Отправить личное сообщение для irkprin Посмотреть профиль Найти все сообщения от irkprin
 
Регистрация: 28.06.2011
Сообщений: 28

Как заменить async: false на async: true
Проблема в том, что данный код устарел, блокирует браузер на время выполнения скрипта и выдает warning:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience.

я понимаю, что нужно использовать колбэки, но у меня не получается корректно внести изменения, все по цепочки начинает отваливаться(

Что за tooltip? config.tooltip в любом случае (async: false или async: true) равен true, но при async: true сразу ошибка:

Uncaught TypeError: Cannot read property 'tooltip' of null

var JCART = (function() {

		// This script sends Ajax requests to config-loader.php and relay.php using the path below
		// We assume these files are in the 'jcart' directory, one level above this script
		// Edit as needed if using a different directory structure
		var path = 'jcart',
			container = $('#jcart'),
			token = $('[name=jcartToken]').val(),
			tip = $('#jcart-tooltip');

		var config = (function() {
			var config = null;
			$.ajax({
				url: path + '/config-loader.php',
				data: {
					"ajax": "true"
				},
				dataType: 'json',
				async: false,
				success: function(response) {
					config = response;
				},
				error: function() {
					alert('Ajax error: Edit the path in jcart.js to fix.');
				}
			});
			return config;
		;
		}());

		var setup = (function() {
			if(config.tooltip === true) {

				tip.text(config.text.itemAdded);
	
				// Tooltip is added to the DOM on mouseenter, but displayed only after a successful Ajax request
				$('.jcart [type=submit]').mouseenter(
					function(e) {
						var x = e.pageY + 25,
							y = e.pageX + -10;
						$('body').append(tip);
						tip.css({top: y + 'px', left: x + 'px'});
					}
				)
				.mousemove(
					function(e) {
						var y = e.pageY + 25,
						x = e.pageX + -10;
						tip.css({top: y + 'px', left: x + 'px'});
					}
				)
				.mouseleave(
					function() {
						tip.hide();
					}
				);
			}

Последний раз редактировалось irkprin, 26.04.2017 в 11:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение определенного класа в зависимости от другого wkornilow Events/DOM/Window 9 25.11.2013 18:48
Глюк firebug'а trikadin Оффтопик 23 16.01.2012 14:04
относительная высота zmaxon ExtJS 13 04.10.2010 12:42
Проблема с оперой Ден Opera, Safari и др. 1 22.03.2009 15:49
Как передать false через функцию? Tend Общие вопросы Javascript 7 16.03.2009 16:55