Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему у меня в функции getCookie() при JavaScript выполнение document.cookie.substring(x,y) прерывается из-за "Объект не поддерживает это свойство или метод"?

79K
03 мая 2012 года
Hallonew
10 / / 28.04.2012
В Yandex.ru по запросу "Работа с функцией setCookie()" появляется ссылка "Работа с Cookies на JavaScript", где дается исходный код также и для getCookie(x,y).
Выполнение этой последней функции прерывается на самом интересном месте -- выполнении document.cookie.substring(x,y), примененной функции для
получении записи, содержащейся в cookie. Выдается сообщение "Объект не поддерживает это свойство или метод" . Интересно еще и то, что описание кода getCookie() поступило с codenet.ru. Обращение к MSDN подтвердило существование метода Substring(x,y): но не более того. Не думаю, что публикация на codenet.ru кода функций проводилаь без ее проверки. Так в чем же причина неработоспособности метода Substring(x,y) в моем случае его применения? Ведь
я старался не откланяться в своей работе от опубликованного исходного кода.
  • Покажите свой код, что получаете при выполнении, что в куках и в каком браузере. от Romik, 03 мая 2012 года
271
05 мая 2012 года
MrXaK
721 / / 31.12.2002
Попробуйте document.cookie.toString()
79K
05 мая 2012 года
Hallonew
10 / / 28.04.2012
Код:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Example</title>
</head>
 
<body  onLoad=delCookie("example")>
<div valign=top>
<!-- --------------------- -->
<SCRIPT  type="text/javascript" language="JavaScript">
function setCookie(name, value, expires, path, domain, secure)
  {
    document.cookie = name + "=" + value +
      ((expires) ? "; expires=" + expires : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  }
</SCRIPT>
 
<!-- --------------------- -->
<SCRIPT  type="text/javascript" language="JavaScript">
function getCookie( name )
  {
    var cookie = " " + document.cookie;
    var search = " " + name + "=";
    var setStr = null;
    var offset=0;
    var end=0;
 
    if (cookie.length > 0)
      {//___Проверка наличия search в cookie.
        offset = cookie.indexOf( search );
        if (offset != -1)
          {//___Определение кол-ва символов в search.
            offset += search.length;
           //___Проверка наличия символов за "=".
            end = cookie.indexOf("=", offset+1);
            if (end == -1)
              {//___Определение общей длины cookie.
                end = cookie.length;
              }
//document.write("1. offset=", offset, " end=", end);
            setStr = cookie.Substring(offset, end);
//setStr = document.cookie;
          }
      }
    return(setStr);
  }
</SCRIPT>
 
<!-- --------------------- -->
<SCRIPT  type="text/javascript" language="JavaScript">
function delCookie( name )
  {
    if(getCookie( name ))
  document.cookie = name + "=; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
</SCRIPT>
 
 
 
<!-- =========================== -->
<td width=402 height=190 valign=top>
<table width=402 height=190 cellspacing=0 cellpadding=0 border=0>
<td width=20> </td>
 
<td width=382 valign=top>
  <form name="Example" method="post" action="http://127.0.0.1/cgi-bin/exam-1.exe">
<img SRC=1.gif height=69 width=1>
<br>
<input type=submit value="Кнопка">
<br><br><br>
<br><img SRC=1.gif width=10 height=1>
<input type=text name=1 value=" 1 " size=1 onKeyDown="k()">
<input type=text name=2 value=" 2 " size=1 onKeyDown="k()">
<input type=text name=3 value=" 3 " size=1 onKeyDown="k()">
<input type=text name=4 value=" 4 " size=1 onKeyDown="k()">
<input type=text name=5 value=" 5 " size=1 onKeyDown="k()">
<input type=hidden name=hid value=Parter_$_9001724>
</form>
</td>
</table>
</td>
 
<!-- --------------------- -->
<SCRIPT  type="text/javascript" language="JavaScript">
function k()
   { var a_1 = Array(0,1,2,3,4,5);
     var a_2 = Array(0," 1 "," 2 "," 3 "," 4 "," 5 ");
     var el=window.document;
     var ev=window.event;
     var j, NUMBER, num;
     //_______
     switch (ev.keyCode)
       { case 9:    // Tab.
           return;
         case 13:   // Enter
           return;
         case 46:   // Del
           num = ev.srcElement.value;     // !!!!
           if (ev.srcElement.value=="")
             {
               j=ev.srcElement.name;
               ev.srcElement.value=a_2[j];
             }
             else
               { ev.srcElement.value="";
                 NUMBER = getCookie("example");
                 if (NUMBER != null)
                   {
                     NUMBER = NUMBER + num;
                     delCookie("example");
                     setCookie("example", NUMBER);
                     NUMBER = getCookie("example");
 window.confirm( NUMBER );
                   }
                   else
                     { NUMBER = num;
                       setCookie("example", NUMBER);
 window.confirm( document.cookie );
                     }
               }
           ev.srcElement.focus();
           ev.srcElement.select();
           ev.returnValue=false;
           return;
         }
   }
</SCRIPT>
 
</div>
</body>
</html>
To MrHak. First of all -- Thank you for your answer! Я проглядел в MSDN возможности toStr(), их оказалось 10 шт., но, по-моему, ни одна из них не подходит
(определение номера картинки, адрес записи в объекте, рассмотрение объекта анимации и т.д.).
----------------------------------------------
To Romik. Высылаю вам htm-файл с исходным кодом -- zz.htm. В браузере программа работает следующим образом. Удаляется по Del цифра в первой
форме (любой!) -- выводится окно подтверждения с именем cookie. Затем удаляется (Del) цифра из следующей формы. Тут бы мне и получить в окне
подтверждения две цифры (без наименования kookie), но... выдается сообщение о неподдержке использованного свойства или метода Сообщаю также,
что браузер -- IE версии 5. Очень жду результата вашего исследования! Спасибо, что заинтересовались моей проблемой. Hallonew.
79K
14 мая 2012 года
Hallonew
10 / / 28.04.2012
Решение найдено! Удалить из программы строку определения setStr по методу subString(x, y) и написать заново эту же строку.
Программа прекрасно работает! Дополнение к коду выше: чтобы нажатие на кнопку "Отменить" в окне alert оборачивалось
восстановлением первоначальной записи, например, " 2 ", необходимо использовать не одно NUMBER, а NUMBER_1 и
NUMBER_2. Записать также var k=true; изменить на k=window.confirm(NUMBER_2);, внести дополнение после .confirm()
if(k==false) { : где удалить существующий cookie и создать setCookie("example", NUMBER_2); В код выше внести также
отслеживание нажатия клавиш со стрелками. Данная работа предназначена для предоставления возможности пользо-
вателю на удаленной рабочей станции (на улице, в магазине) сначала составить слово адреса своей электронной почты,
а также номер интересной для него информации и отослать на сервер провайдера, чтобы информация была отослана
ему в почтовы ящик. Спасибо всем за участие! На моей памяти программиста-самоучки это 2 случай нераспознавания
записи кода. Hallonew.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог