Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перейти к якорю после обновления, ссылки внутри документа + AJAX 
:(
    Опции темы
nitr
Дата 20.3.2006, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



Доброе время суток!
Подскажите или дайте идею. Я использую prototype.js (тут русское описание)

Я использую Ajax.Updater, мне нужно перейти по ссылке и дополнительно внутри документа по #имя
т.е. примерно в документе (который подгружаем) есть
#news.html
<a name="top"></a>
далее текст...

Я хочу подгрузить эту страницу и перейти на #top.

Заранее благодарен!



--------------------
PM   Вверх
Ciber SLasH
Дата 20.3.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<title>JavaScript :: Переход на якорь</title>
</head>

<body>
<input type="button" onClick='document.links[0].focus()' value="Перейти к якорю">
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
<a href='#that'>Якорь</a>
</body>
</html>

PM   Вверх
nitr
Дата 20.3.2006, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



Большое спасибо! А AJAX смотрели? Там как раз onclick="new AJAX.Updater(....."... Вот в русском описании есть примеры.

<a href="?index" onclick="new Ajax.Updater('maincontent', '?index'); return false;" title="На главную">На главную</a>

вот к примеру мне надо...
<a class="ac" href="?news=14112005#1" onclick="new Ajax.Updater('maincontent', '?news=14112005#1'); return false;" title="1.">14.11.2005 - 1.
</a> и через аякс грузиться страница где есть <a name="1">1</a>


--------------------
PM   Вверх
Ciber SLasH
Дата 20.3.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



Попробуй:
Код

<a class="ac" href="?news=14112005#1" onclick="new Ajax.Updater('maincontent', '?news=14112005#1'); document.anchors['1'].focus(); return false;" title="1.">14.11.2005 - 1.
</a>

PM   Вверх
nitr
Дата 20.3.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



ОГРОМНОЕ СПАСИБО, помогло!


--------------------
PM   Вверх
Ciber SLasH
Дата 20.3.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



На здоровье. smile
PM   Вверх
nitr
Дата 20.3.2006, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



Хех, работает то работает, но аякс перестаёт работать smile как технология smile Т.е. он переходит как по обычной ссылке, а должен подгружать контент...
Добавлено @ 21:08
Подскажите как использовать document.links[0].focus() для конкретной ссылки вдруг у меня их 50 smile а не как с массивом


Это сообщение отредактировал(а) nitr - 20.3.2006, 21:10


--------------------
PM   Вверх
Ciber SLasH
Дата 20.3.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



Цитата(nitr @ 20.3.2006, 21:03 Найти цитируемый пост)
Подскажите как использовать document.links[0].focus() для конкретной ссылки вдруг у меня их 50 smile а не как с массивом

А вот из-за этого и не работает AJAX.
Я ведь в последнем посте написал: document.anchors['1'].focus();
т.е. это переход не по ссылке, а переход на ссылку, которая имеет атрибут name, но не имеет href
А document.links[0].focus(); — это переход по ссылке

В document.anchors['1'].focus(); то, что в скобках и в кавычках — это именно значение атрибута name в ссылке, а если указывать просто цифру без скобок, то это будет индекс ссылки в массиве всех ссылок документа.
PM   Вверх
nitr
Дата 20.3.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



да я понял smile только вот ошибочно document.anchors['1'].focus(); пишется has no properties


--------------------
PM   Вверх
nitr
Дата 20.3.2006, 23:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



document.anchors['Ubiistvo_Kenni'].focus(); smile

Ошибка: document.anchors.Ubiistvo_Kenni has no properties
Источник: http://127.0.0.1/
Строка: 1


--------------------
PM   Вверх
Ciber SLasH
Дата 20.3.2006, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



Цитата(nitr @ 20.3.2006, 23:33 Найти цитируемый пост)
document.anchors['Ubiistvo_Kenni'].focus(); smile

Во-первых, код в студию.
Во-вторых, обращаться нужно после загрузки страницы.
PM   Вверх
nitr
Дата 21.3.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



пример кода (веcь не надо приводить)
<div id="maincontent">
...
<a class="ac" href="?news=14112005#Ubiistvo_Kenni" onclick="new Ajax.Updater('maincontent', '?news=14112005#Ubiistvo_Kenni'); document.anchors['Ubiistvo_Kenni'].focus(); return false;" title="Убийство Кенни.">Убийство Кенни.</a><br>
...
</div>

Есть страница news, которая погружается в <div id="maincontent">...</div>

Вот кусок news
<a name="..."></a>
...
<a name="Ubiistvo_Kenni"></a>
...

Это сообщение отредактировал(а) nitr - 21.3.2006, 00:28


--------------------
PM   Вверх
nitr
Дата 21.3.2006, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



У меня именно по имени не переходит... smile


--------------------
PM   Вверх
nitr
Дата 21.3.2006, 02:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: нет
Всего: 84



function test()
{
var str="";
for(j=0;j<document.anchors.length;j+=1)
{
str+=document.anchors[j].name;
}
alert(str);
}

сделал так... он не находит "якоря" smile Это аяксом погружены... AJAX.Updater


--------------------
PM   Вверх
Ciber SLasH
Дата 21.3.2006, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: 1
Всего: 67



nitr, попробуй вот это:
1) <a class="ac" href="?news=14112005#Ubiistvo_Kenni" onclick="new Ajax.Updater('maincontent', '?news=14112005#Ubiistvo_Kenni'); goToAnc('Ubiistvo_Kenni'); return false;" title="Убийство Кенни.">Убийство Кенни.</a>
2) вставь после <HEAD>:
Код

<script type='text/javascript'>
function goToAnc(ancName) {
var anc = document.anchors;
    for (var i = 0; i < anc.length; i++) {
        if (anc[i].name == ancName) {    // нашли нужный якорь
            if (window.clipboardData || window.opera) {    // IE & Opera
                var ah = anc[i].lastChild;
                if (!ah.href || ah.href.indexOf(ancName) == -1) {    // если ещё не создали доп. ссылку
                    // Создаём доп. ссылку с якорем (по-другому в IE и Опере не получается)
                    ah = document.createElement("A");
                    ah.href = "#"+ancName;
                    // Пустые ссылки, типа "<a href='#tut'></a>" не работают, поэтому надо в неё что-нить вписать
                    ah.innerHTML = "&nbsp;";
                    //==[ Прячем ссылку с глаз долой ]==============================
                    ah.style.fontSize = "0";
                    ah.style.lineHeight = "0";
                    ah.style.color = anc[i].parentNode.style.backgroundColor;
                    ah.style.textDecorationNone = "true";
                    ah.style.cursor = "text";
                    ah.onfocus = function () {
                        this.blur();
                        this.parentNode.focus();
                    }
                    //==============================================================
                    anc[i].appendChild(ah);
                }
                ah.focus();
            } else {
                anc[i].focus();
            }
            break;
        }
    }
}
</script>

Добавлено @ 11:01
Как оказалось, focus() на именованных ссылках работает FireFox, а в IE и Опере — нет (в других браузерах не тестил).
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.