Работа с методом setLocation и событием onLocationChange

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Аватара пользователя
BaCo
Сообщения: 76
Зарегистрирован: 28 дек 2010, 11:48

Работа с методом setLocation и событием onLocationChange

Сообщение BaCo »

Здравствуйте! Прошу привести пример работы с этим методом и обработчиком событий. Сам уже запарился. Сейчас пробую доставать адрес (после знака # в url) с помощью сессий:

Код: Выделить всё

if(isset($_GET['hash'])) $vkurlhash = htmlspecialchars($_GET['hash']);else $vkurlhash = "/";echo $vkurlhash;
Вообще ничего не показывает. Для обработки применяю:

Код: Выделить всё

<script type="text/javascript">$(document).ready(function() {    var VK = new vk_api(        'secret',        function () {            VK.external.setLocation('{$vkurlhash}');            VK.addCallback("onLocationChanged", onLocationChanged);            VK.external.setTitle(document.title);            VK.external.resizeWindow(827, document.getElementById('page').clientHeight);        }    );    function onLocationChanged(loc) {        if(window.location.pathname != loc && loc != '') {            window.location.href = 'http://site.ru' + loc;        }    }});</script>
И еще вдогонку: разумно ли изменение размера страницы вне таймера, т.е. только 1 раз?

PS Использую JS Wrapper для работы с ВКонтакте vk-jsapi (http://code.google.com/p/vk-jsapi/)
Аватара пользователя
BaCo
Сообщения: 76
Зарегистрирован: 28 дек 2010, 11:48

Re: Работа с методом setLocation и событием onLocationChange

Сообщение BaCo »

Ну помогите! Самому не понять :D
Аватара пользователя
BaCo
Сообщения: 76
Зарегистрирован: 28 дек 2010, 11:48

Re: Работа с методом setLocation и событием onLocationChange

Сообщение BaCo »

Ладно, я ошибся насчет того, что сам не смогу понять :lol:
Другим решение пригодится. PHP обработка:

Код: Выделить всё

if(isset($_GET['hash'])) $vkurlhash = "'".htmlspecialchars($_GET['hash'])."'";else $vkurlhash = "window.location.pathname";
JavaScript:

Код: Выделить всё

VK.callMethod('setLocation', {$vkurlhash});VK.addCallback('onLocationChanged', onLocationChanged);function onLocationChanged(loc) {    if(window.location.pathname != loc && loc != '') {        window.location.href = '{$vkoptions['mysite']}' + loc;    }}
Все оказалось очень просто :lol:
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Работа с методом setLocation и событием onLocationChange

Сообщение Александр »

Данные после знака # в javascript можно достать так:

Код: Выделить всё

alert(location.hash);// и без знака #alert(location.hash.slice(1));
Ответить