Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Запретить открытие новой страницы "корзина", если есть уже открытая (https://javascript.ru/forum/events/64914-zapretit-otkrytie-novojj-stranicy-korzina-esli-est-uzhe-otkrytaya.html)

zaikv 13.09.2016 17:19

Запретить открытие новой страницы "корзина", если есть уже открытая
 
Здравствуйте, необходима помощь новичку.
Есть ссылка
<a href="javascript:void(0)" id="basket_add" data-add-url="<?= $arResult['ADD_URL'] ?>" class="add-button btn btn-default">В корзину</a>

Есть скрипт
$('#basket_add').click(function ($event) {
 
        var $clicked = $($event.target);
        var quantity = $('#quantity').val();
        var quantityVariable = $('#quantity_variable').val();
        var addUrl = $clicked.data('add-url') + '&' + quantityVariable + '=' + quantity;
 
        $.get(addUrl, null, function () {
            $clicked.unbind($event);
            $clicked.removeAttr('href');
            $clicked.addClass('inbasket');
            $clicked.text('В корзине');
 
            // Обновить корзину в шапке.
            $.get(header_basket_url, null, function (data) {
                $('#header-cart-info').replaceWith(data);
            });
        });
    });

Необходимо чтобы после добавления товара в корзину, осуществлялся переход в корзину на новой вкладке.
Я сначала прописал в скрипте
window.open("ссылка")

, но скрипт не всегда работал корректно: то не происходил переход, то после перехода товар не отображался в корзине(после обновления страницы там был).
После, я явно указал адрес в самой ссылке, добавив target=_blank(до этого удалив строку из скрипта)
<a href="ссылка" id="basket_add" target="_blank" class="add-button btn btn-default">В корзину</a>

У меня возник ряд вопросов:
1. Как лучше сделать?
2. Почему переход через скрипт работал не всегда корректно?
3. Почему после удаления вызова скрипта из адреса, он все равно продолжал выполняться, т.е. после нажатия на кнопку, менялось название кнопки, ее окрас(class=inbasket)?
4 Можно ли создать условие, которое проверяло открыта ли страница с корзиной или нет, дабы не допускать открытие дублирующих окон?

warren buffet 16.09.2016 12:37

1. Не делай попупов если нужны клиенты
2. Если не нужны клиенты, делай попупы

xbit 25.09.2016 22:43

1. Как лучше сделать?
document.getElementById('basket_add').click();

Эта строчка полностью имитирует клик юзера по ссылке. Есть еще вариант:

window.location.href="ссылка";


Этот код откроет корзину в этом же окне.

warren buffet 26.09.2016 04:15

Цитата:

Сообщение от xbit
в этом же окне.

Из js можно управлять настройками браузера касательно, где открывать новую страницу - в окне или во вкладке?


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