1. Forum używa plików Cookies. Dowiedz się więcej o celu ich używania i możliwości zmiany ustawień Cookies w przeglądarce. Czytaj więcej...

ROZWIĄZANE Javascript - opóźnienie wykonania kodu

Dyskusja w 'Dodatki oraz integracje' rozpoczęta przez użytkownika Słoik, 27 Październik 2017.

  1. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Czy ktoś orientuje się jak może wyglądać kod JS, który opóźni o parę sekund wykonanie paru linijek kodu?
    Próbowałem już z:
    • try (Thread.sleep)
    • Timer
    • wait
    Ale albo nie działały albo uwalały działanie sklepu - wyłączały funkcjonalność koszyka (błędy związane ze zmienną Shop).
    Z góry dzięki!
     
  2. Grzesiek

    Grzesiek Centrum Pomocy home.pl

    Wiadomości:
    3 660
    Docenione treści:
    333
    Niestety nie znam się na JS, wystawiłem zgłoszenie wewnętrzne, może ktoś na szybko potrafi wskazać rozwiązanie: FEEDBACK-1333
     
  3. selljus

    selljus Bywalec

    Wiadomości:
    15
    Docenione treści:
    1
    a jakie zadanie ma realizować ten skrypt ?

    Wysłane z telefonu.
     
  4. X9DESIGN

    X9DESIGN Bystrzak

    Wiadomości:
    63
    Docenione treści:
    4
    setTimeout(); ?

    HTML:
         var delayscript = function(){
              /* kod funkcji  */
         };
         setTimeout(delayscript, 2000);
    
     
  5. selljus

    selljus Bywalec

    Wiadomości:
    15
    Docenione treści:
    1
    To rozwiązanie działa.. kiedyś testowałem, jednak nie wiemy jakie zadanie ma pełnić funckja, która będzie opóźniona.

    Wysłane z telefonu.
     
  6. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Dzięki za szybkie odpowiedzi! Kod, którego wykonanie chce opóźnić wygląda tak:
    Kod:
    var OSId = document.getElementById('#my-user-id');
    $(document).ready(function() {
        if ($.cookie('modal_shown') == null) {
            $.cookie('modal_shown', 'sloik-push', { expires: 14, path: '/' });
          if (OSId == null) {
            $('#subModal').delay(2000).fadeIn(500);
          }
        }
    });
    Kod działa (w każdym razie pierwszy warunek), modal pojawia się ale nie jestem pewien drugiego warunku. id="my-user-id" jest dynamicznie wypełniane przez inny skrypt i obawiam się, że powyższy kod natrafia jeszcze na OSId == null i zawsze się spełnia. Dlatego chcę go opóźnić. Dodatkowo nie jestem pewien składni.
    Jak ktoś jest biegły, to proszę o wypowiedź...
     
  7. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    A powyższy kod wypróbuję późnym wieczorem, aby w razie czego nie unieruchomić sklepu w ciągu dnia...
     
  8. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Ok, funkcja opóźniająca działa, dzięki!
    Problem nr 2: jak porównać pustą zawartość elementu. Kod wygląda tak:
    Kod:
    var delayscript = function(){
    var OSId = document.getElementById('#my-user-id2');
    $(document).ready(function () {
        if (typeof OSId == "") {
        if ($.cookie('modal_shown') == null) {     
          $.cookie('modal_shown', 'sloik-push', { expires: 14, path: '/' }); $('#subModal').delay(2000).fadeIn(500);
          }
        }
     });
          
    };
    setTimeout(delayscript, 15000);
    I jest problem ze zmienną OSId. Jeżeli jest to pusty ciąg to jak poprawnie go pobrać aby można było użyć do porównania. Ogólnie, to kiedy zawartość span jest pusta:
    Kod:
    <span id="my-user-id2"></span>
    kod ma ustawić ciasteczko oraz właśnie wyświetlić modal.
    Jeżeli usunę warunek z OSId albo zamienię je mijescami to modal się wyświetla jeżeli nie znajdzie ciasteczka, to jesti ok. Czyli mam problem z odczytaniem pustej wartości zmiennej OSId zawartej w '#my-user-id2...
     
  9. Słoik

    Słoik Znawca

    Wiadomości:
    246
    Docenione treści:
    26
    Ok, udało mi się znaleźć rozwiązanie. Jeżeli komuś się przyda, to wygląda tak:
    Kod:
    var delayscript = function(){
    var str = $('#my-user-id2').text().length;
    $(document).ready(function () {
        if (!str || str === 0) {
        if ($.cookie('modal_shown') == null) {     
          $.cookie('modal_shown', 'sloik-push', { expires: 14, path: '/' }); $('#subModal').fadeIn(800);
          }
        }
     });
          
    };
    setTimeout(delayscript, 10000);
    Oczywiście nazwy obiektów mogą być różne. A problem dotyczył zamiany ciągu z wartości na tekst...
     

Poleć forum znajomym