ekburg.artstudio-3d .ru (специально разбил ссылку, гугл пока не нужен)
Там панорама (на флеше). Прикручена функция, мониторящая текущий вид, и, налету, обновляющая адрес в строке браузера. Для того, что бы можно было ссылкой поделиться и по ней сразу грузился нужный вид.
Сама функция:
<script src="jquery.min.js">
</script>
<script>
var hashTimeout;
function updhash() {
if (hashTimeout) clearTimeout(hashTimeout);
hashTimeout = setTimeout(function() {
hashTimeout = null;
var k = $('#krpanoSWFObject')[0];
window.location.hash="#"+k.get('xml.url').substr(0, 2)+","+k.get('view.hlookat')+","+k.get('view.vlookat')+","+k.get('view.fov');
}, 100);
}
$(document).ready(function(){
var swf = createswf("krpano.swf");
var options = window.location.hash.substr(1).split(',');
if (options.length == 4) {
swf.addVariable("xml",parseInt(options[0])+'.xml');
swf.addVariable("view.hlookat", options[1]);
swf.addVariable("view.vlookat", options[2]);
swf.addVariable("view.fov", options[3]);
}
else {
swf.addVariable("xml", "11.xml");
}
swf.embed("pano");
});
</script>
hlookat, vlookat, fov - берется из выхлопа панорамного плеера.
11.xml - текущий файл конфигурации панорамы (для каждой свой)
В каждом управляющем xml есть экшн:
<events
onviewchange="js(updhash())"
/>
Выхлоп в адресной строке получается такой:
.ru/#11,-25,5,45
Что означает:
текущая панорама из 11.xml
координаты центра: по горизонту -25, по вертикали 5, угол обзора 45.
Саму эту функцию я подсмотрел у коллег. У них работает, и у меня работает. Но нужно ее усовершенствовать, ибо есть проблема:
Получаемая ссылка (пример выше) - не распознается парсерами ссылок, что делает очень неудобной ее использование. Как я понял - это из-за запятых.
window.location.hash="#"+k.get('xml.url').substr(0, 2)+","+k.get('view.hlookat')+","+k.get('view.vlookat')+","+k.get('view.fov');
Но, если запятые заменить на другие символы - то ссылка перестает работать - не загружается по ней необходимое.
Она работает только если там цифры. Я пытался вводить «человеческие» префиксы типа:
window.location.hash="#scene"+k.get('xml.url').substr(0, 7)+"H"+k.get('view.hlookat')+"V"+k.get('view.vlookat')+"FOV"+k.get('view.fov');
Для формирования выхлопа типа:
.ru/#scene11h-25v5fov45
Но это уже не работает. Не грузится указанный вид - вылазит ошибка о невозможности загрузки xml.
Вопрос: Там что правда можно только цифры и запятые использовать? Хоть запятые на что можно сменить? (буквы - нельзя, решетку - нельзя. Проверил)
Может саму функцию нужно переписать как-то?