Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: удалить содержимое в окне от document.open()
 
 автор: ntro123   (16.11.2012 в 18:48)   письмо автору
 
 

Делаю добавления товара в корзину через js, столкнулся с такой проблемой: при нажатии "Добавить в корзину" товар добавляется, создается новое окно методом open() (имя ему дал win), все отлично, но если пользователь не закроет окно и нажмет еще раз "Добавить в корзину" то win.document.write() место перезаписи ДОПИШЕТ в то же окно, а нужно чтобы стер все что было в новом окне и написал другой текст, а не добавлял вниз страницы еще сообщений.

Суть проблемы см. на странице http://zakaz-viagra.ru/ru/product/dzhenerik_viagra, нажимаем "Добавить в корзину" затем не закрывая окно еще раз нажимаем "Добавить в корзину" и проблема будет на лицо.

Вот код JS:
$(function(){
    $('a[href*=add_to_cart]').click(function(e){
        e.preventDefault();
        
        //тут проверка если окно win есть то все что в нем есть удалить

        var idt=$(this).attr('href').replace(/^.{0,}\/add_to_cart\/([0-9]{1,3})$/i, "$1");
        win=document.open('', 'win', 'top='+((screen.availHeight-240)/2)+',left='+((screen.availWidth-450)/2)+', width=450, height=200, menubar=0, toolbar=0,l ocation=0, directories=0, status=0, resizable=0, scrollbars=0');
        
        
        if(!win)
            return alert('трололо');
        
        win.document.write('<html>...тут стер, а то очень длинно получается...</html>');
        win.focus();
        
        
        
        $(win.document.getElementById('mc')).click(function(){
            win.close();
            document.location.href='http://zakaz-viagra.ru/ru/shopping_cart';
        });
        
        $(win.document.getElementById('cl')).click(function(){
            win.close();
        });
        
        $(win.document.getElementById('faq')).click(function(){
            document.location.href='http://zakaz-viagra.ru/ru/article/faq';
            win.close();
        });
        
        $(win.document.getElementById('dost')).click(function(){
            document.location.href='http://zakaz-viagra.ru/ru/article/dostavka_i_oplata';
            win.close();
        });
        
        $(win.document.getElementById('obrz')).click(function(){
            document.location.href='http://zakaz-viagra.ru/ru/recall';
            win.close();
        });
        
        $(win.document.getElementById('acii')).click(function(){
            document.location.href='http://zakaz-viagra.ru/ru/article/akcii_i_skidki';
            win.close();
        });
    });
});

  Ответить  
 
 автор: confirm   (16.11.2012 в 19:04)   письмо автору
 
   для: ntro123   (16.11.2012 в 18:48)
 

А зачем вообще новое окно для корзины?

  Ответить  
 
 автор: ntro123   (16.11.2012 в 19:15)   письмо автору
 
   для: confirm   (16.11.2012 в 19:04)
 

а как еще? да есть еще один вариант можно место нового окна сделать див на подобии того что появляется при нажатии на "Заказ в один клик" + айфрейм сувать и удалять на страницу, а так новое окно и все гуд, да и вообще какая разница? захотел все тоже самое но сделать через окно. а раньше было вообще ппц нажимаешь и он сразу без спроса кидает в корзину. а нужно чтобы давал пользователю выбор, в корзину перейти или куда, и т.п.

  Ответить  
 
 автор: confirm   (16.11.2012 в 19:21)   письмо автору
 
   для: ntro123   (16.11.2012 в 19:15)
 

Какая разница говорите? Ну вот о первой бяке вы уже сами упомянули - о действиях пользователя.
Корзина, она на сервере, у клиента только информация о ней. Добавил товар пользователь - асинхронный запрос на сервер, и ответ сервера помещает в эту информационную корзину.
А ее действительно нужно делать на обычных элементах - div, table... Это будет намного целесообразнее, практичнее, эстетичнее, удобное для пользователя.
Window.open, iframe совсем лишнее, тем более в таком ключе как это делаете вы.

  Ответить  
 
 автор: ntro123   (16.11.2012 в 19:35)   письмо автору
 
   для: confirm   (16.11.2012 в 19:21)
 

в плане див место open() я могу согласиться, мороки будет меньше чем с open().

Я понимаю что в идеале нужно отправлять запрос на сервер на какой нибудь страничку типо add.php которая будет добавлять товар место айфрейма, но айфрейм именно подгружает страничку http://zakaz-viagra.ru/ru/add_to_cart/1 (место 1 id товара) но в силу того что движок очень кривой, не получается этого сделать и приходиться подгружать фреймом http://zakaz-viagra.ru/ru/add_to_cart/N, попробую решить этот вопрос.

В общем тему тогда можно закрыть, спасибо confirm.

  Ответить  
 
 автор: confirm   (16.11.2012 в 20:32)   письмо автору
 
   для: ntro123   (16.11.2012 в 19:35)
 

Не надо никаких страничек подгружать ни в какие фреймы.
Вы уже подгружаете несколько десятков КБ jQuery, библиотеки довольно таки с приличным функционалом, и это ради этого:
$(win.document.getElementById('faq'))...?
Вы либо котлеты выбирайте, либо мух, не скрещивайте таким образом слона и ежика.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования