Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   JS загрузка контента (https://javascript.ru/forum/misc/21807-js-zagruzka-kontenta.html)

MCTrane 24.09.2011 22:06

JS загрузка контента
 
У меня на сайте все страницы походи и отличаются только текстом в середине, если загружать его таким образом:
Например, ссылка <a href="feed.php"></a>
при нажатии на неё бы запускал "аякс" и передавал в файл-обработчик "feed.php", а в файле feed.php не будет не шапки не подвала и т.д., а токо центральный текст, файл обработчик откроет файл file_get_contets`ом и отдаст "аяксу" содержимое и оно вставится в центр.
Так вот есть 2 вопроса:
1. Как блокировать переход по ссылке?(т.е., чтобы при нажатии на <a href="feed.php"></a> запускалась только моя функция)
2. Чем-то этот способ загрузки плох? Может для поисковиков вреден или ещё что-то?
Помогите пож-та, а то сегодня проснулся и стукнула идея в голову :) Не терпится осуществить)

Триви 24.09.2011 22:22

1. Действие браузера по умолчанию

по второму пункту не подскажу, ещё не разбирался

MCTrane 24.09.2011 22:31

Не работает:
<script type="text/javascript">
document.getElementsByTagName('A').onclick = function(event) {
    event = event || window.event
 
    if (event.preventDefault) {
        // Вариант стандарта W3C:
        event.preventDefault()
    } else {
        // Вариант Internet Explorer:
        event.returnValue = false
    }
}
</script>
<A href="test.com">sdsdsdsd</A>

Почему просто нельзя при onclick сделать return false, но вот как приминить это сразу ко всем ссылкам?
А поисковики поддерживают яваскрипт, или они будут игнорировать этот return false и переходить по ссылке?

walik 24.09.2011 22:39

Так вы обработчик вешайте после того как создаете элемент.

MCTrane 24.09.2011 22:56

window.onload = function () {
    document.getElementsByTagName('A').onclick = function(event) {
    event = event || window.event
  
    if (event.preventDefault) {
        // Вариант стандарта W3C:
        event.preventDefault()
    } else {
        // Вариант Internet Explorer:
        event.returnValue = false
    }
}
};

тоже не работает

Триви 24.09.2011 23:11

http://javascript.ru/tutorial/dom/search#poisk-po-tegu

MCTrane 24.09.2011 23:16

Триви, Я как раз так и сделал, как там написано. А если это намёк на то, что нужно указывать элемент, и нельзя сразу все - то это конечно же не подходит.

MCTrane 24.09.2011 23:19

Вот код хороший нашёл, но он не работает( Всё норм, но он не убивает переход по ссылке:
<script type="text/javascript">
window.onload = function () {
    var type = 'click', // Тип события
    handler = function () { // Обработчик события
        alert( elements[0].href );
    }
    attribute = 'class', // Атрибут
    val = 'foo', // Значение
    elements = document.querySelectorAll ? document.querySelectorAll('[' + attribute + '="' + val + '"]') : document.getElementByTagName('*');
    for ( var i = 0; i < elements.length; i++ ) {
        if ( elements[i].getAttribute( attribute ) == val ) {
            if ( elements[i].addEventListener ) {
                elements[i].addEventListener( type, handler, false );
            } else {
                elements[i].attachEvent( 'on' + type, function () {
                    handler.call( elements[i] );
                })
            }
        }
    }
};
</script>
<A href="test.com" class="foo">sdsdsdsd</A>

Что в него добавить?

Триви 24.09.2011 23:27

Цитата:

Сообщение от MCTrane (Сообщение 127960)
Триви, Я как раз так и сделал, как там написано. А если это намёк на то, что нужно указывать элемент, и нельзя сразу все - то это конечно же не подходит.

А перебрать все слабо что ли, не пойму?

MCTrane 24.09.2011 23:35

Ну я думал будет что-то на подобие jquery) Спасибо, работает. Думаю, на индексацию не влияет, если ссылки оставлять. Но просто почему-то я токого нигде не видел, вот и смущает меня....


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