Логика и смекалка

Разбираясь с очередным API от сервиса онлайн-чатиков для веб-сайтов, я столкнулся с проблемой, когда на компьютере все работало хорошо, а на Айпадушке — нет. У меня был вот такой код:

$(...).on('click', function(e) {
	e.preventDefault();
	$zopim.livechat.window.toggle();
});

Другими словами, при клике на кнопочку я хотел, чтобы чат разворачивался или скрывался, если уже развернут. Но на мобильных устройствах чат открывается не внутри страницы с помощью <iframe>, а в качестве отдельной вкладки в браузере, поэтому toogle() не работал. Что же делать?

Пообщавшись с поддержкой и взглянув на пару страниц, что мне посоветовали посмотреть, стало понятно, что надо использовать show() вместо toogle(), но тогда наша кнопочка будет всегда лишь открывать чат. Покопавшись в ужатом исходном коде файла, который заставляет чат работать… Ничего интересного. Можно заметить, что на мобильных устройствах рядом с <iframe> появляется еще какая-то ссылка <a>. Ну и что? Искать на странице есть ли вот этот <a>? Слишком некрасиво. Найти строчку, которая определяет тип устройства? Ой, все.

Тут я вспомнил, что в API была функция, которая могла определить открыт чат или нет — getDisplay(). Эврика!

$(...).on('click', function(e) {
	e.preventDefault();
	if ($zopim.livechat.window.getDisplay()) {
		$zopim.livechat.window.hide();
	} else {
		$zopim.livechat.window.show();
	}
});

С таким кодом все работает и на трогательных устройствах, и на компьютерах.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s