Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS и getURL плавный переход к anchor (https://javascript.ru/forum/misc/14430-js-i-geturl-plavnyjj-perekhod-k-anchor.html)

Blizzart 16.01.2011 15:57

JS и getURL плавный переход к anchor
 
Объясните, пожалуйста, в чем тут ошибка:
Во флеше я пишу:
getURL("javascript:openNewWindow('#myAnchor','_parent'); ");


Это дает переход на якорь. Все работает. Но в конце функции я добавляю jQuery, который делает этот переход плавным. Но именно он не обрабатываеться, то есть переход все равно резкий

function openNewWindow(URLtoOpen, windowName, windowFeatures) 
{newWindow=window.open(URLtoOpen, windowName, windowFeatures);
 destination = $("#myAnchor").offset().top;
$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1700 );
 }


вот так, например, работает нормально:

setTimeout(function() {destination = $("#myAnchor").offset().top;
 $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1700 );}, 5000)


разницы я не вижу, только во втором варианте в виде отдельной функции, а в первом просто вложено в функцию.

Amphiluke 16.01.2011 16:17

Резкий переход на якорь делает эта строчка:
Цитата:

Сообщение от Blizzart
newWindow=window.open(URLtoOpen, windowName, windowFeatures);

зачем она?

Blizzart 16.01.2011 16:45

Это потому что локально у меня не работало:
getURL("#myAnchor","_parent");

На сервере проверил - работает.
И еще потому что я не понимаю как прописать тип окна...
Я исправил js на
function openNewWindow(URLtoOpen) 
 destination = $(URLtoOpen).offset().top;
$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1700 );
 }

В флеше пытался так:
getURL("javascript:openNewWindow('#myAnchor');");

и так:
getURL("javascript:openNewWindow('#myAnchor');","_parent");

Не работает :(

Amphiluke 16.01.2011 17:05

Не понятно. У вас этот код вызывается из фрейма? А прокрутить вы ходите родительское окно?
function openNewWindow(URLtoOpen) {
	var doc = self.top.document;
	destination = $(URLtoOpen, doc).offset().top;
	$("html:not(:animated),body:not(:animated)", doc).animate({ scrollTop: destination}, 1700 );
}


Ну и дальше
Код:

getURL("javascript:openNewWindow('#myAnchor')");

Blizzart 16.01.2011 17:48

Огромное спасибо! Так работает. Сам бы я не догадался. в первый раз вижу: self.top.document :)


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