Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как выполнить скрипт один раз только при первом заходе на страницу? (https://javascript.ru/forum/misc/30165-kak-vypolnit-skript-odin-raz-tolko-pri-pervom-zakhode-na-stranicu.html)

fender2k5 26.07.2012 14:44

Как выполнить скрипт один раз только при первом заходе на страницу?
 
Есть некая форма которую нужно автоматом подсунуть без участия пользователя. Все работает, но зацикливается. Не могу сделать что б один раз только сработало.
Вот сам скрипт после формы:
window.addEvent('domready', function() {
    $('addtocart_501022b3a18e1').submit();
  });

Deff 26.07.2012 14:47

fender2k5,
После успешного заполнения - поставьте куки
При входе проверяете - есть кук или нет перед выдачей формы

fender2k5 26.07.2012 14:51

А можно плз с примерами, а то в яве новичок вообще. И мне нужно что б при перезагрузке страницы то же не отрабатывало повторно. Заранее спс.

9xakep 26.07.2012 14:55

fender2k5,
Куки - это такие файлы, содержащие какую-либо инфу в браузере (они не удаляются после перезагрузки итд)
http://www.codenet.ru/webmast/js/Cookies.php

fender2k5 26.07.2012 15:17

А существует ли способ без использования кук ?

Deff 26.07.2012 15:18

fender2k5,
LocalStorage - думаю , если кроссбраузерно - по коду больше

9xakep 26.07.2012 15:29

Deff,
я бы не стал ради этого использовать LocalStorage, они насколько я знаю нужны для того, что бы хранить большой объем информации

Deff 26.07.2012 15:33

9xakep,
я б тоже - но чел осведомляецо

Вот готовый скрипт куков пост 2 http://javascript.ru/forum/misc/2942...tml#post184541

И ниже - пояснения

fender2k5 26.07.2012 15:36

Так все таки копать лучше в сторону кук ? Ок. Спс...будем ковырять...

fender2k5 26.07.2012 16:40

Условие если кука есть : if(getcookie('Name'))
А как будет обратное условие если такой куки нет?

Deff 26.07.2012 16:43

if(!getcookie('Name'))

fender2k5 26.07.2012 17:12

Цитата:

Сообщение от Deff (Сообщение 191827)
if(!getcookie('Name'))

Да) Мог бы и сам догадаться, спасибо.

Практически получилось то что хотелось, но если после отработки скрипта обновить страницу опять он повторно выполняется, хотя по идее не должен так как уже присутствует кука. Не знаю на сколько верно, но полный код с формой у меня такой:
<form id="addtocart_501022b3a18e1" class="addtocart_form" onsubmit="handleAddToCart( this.id );return false;" name="addtocart" method="post" action="/index.php">
<input type="hidden" value="com_virtuemart" name="option">
<input type="hidden" value="shop.cart" name="page">
<input type="hidden" value="cartAdd" name="func">
<input type="hidden" value="125" name="prod_id">
<input type="hidden" value="125" name="product_id">
<input type="hidden" value="1" name="quantity">
<input type="hidden" value="" name="set_price[]">
<input type="hidden" value="" name="adjust_price[]">
<input type="hidden" value="" name="master_product[]">
<input type="hidden" value="80" name="Itemid">
</form>

	<script type="text/javascript">

	if(!getcookie('Posted')) {

	    window.addEvent('domready', function() {
    $('addtocart_501022b3a18e1').submit();
  });
}
	function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
	 function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}
	     setcookie('Posted',true,24*60*60*1000) //Кук на сутки
	
	</script>

Deff 26.07.2012 17:15

<form id="addtocart_501022b3a18e1" class="addtocart_form" onsubmit="handleAddToCart( this.id );return false;" name="addtocart" method="post" action="/index.php">
<input type="hidden" value="com_virtuemart" name="option">
<input type="hidden" value="shop.cart" name="page">
<input type="hidden" value="cartAdd" name="func">
<input type="hidden" value="125" name="prod_id">
<input type="hidden" value="125" name="product_id">
<input type="hidden" value="1" name="quantity">
<input type="hidden" value="" name="set_price[]">
<input type="hidden" value="" name="adjust_price[]">
<input type="hidden" value="" name="master_product[]">
<input type="hidden" value="80" name="Itemid">
</form>

	<script type="text/javascript">
	
function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+b+(c ? '; expires='+d.toUTCString() : '');else return false;}
	 function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? c[1] : false;}

if(!getcookie('Posted')) { setcookie('Posted',true,24*60*60*1000) //Кук на сутки

  ( function() {window.addEvent('domready', function() {

        $('addtocart_501022b3a18e1').submit();

  });}())
}
	
	</script>

fender2k5 26.07.2012 17:37

Эффект остался тот же, ладно это не критично, на том этапе вряд ли кто-то будет обновлять страничку, видимо такая специфика работы virtuemarta ) Спасибо за помощь! )

Deff 26.07.2012 20:07

Цитата:

Сообщение от fender2k5
Эффект остался тот же, ладно это не критично, на том этапе вряд ли кто-то будет обновлять страничку, видимо такая специфика работы virtuemarta ) Спасибо за помощь! )

Дайте ссылку на страницу ... (Поправил скрипт


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