(окно) функция .load не работает при обновлении - PullRequest
0 голосов
/ 26 мая 2020

У меня есть страница, на которой у меня есть функция в window.onload для имитации щелчка по элементу. Этот щелчок может произойти только тогда, когда страница полностью загружена. Оказывается, функция работает при первом go переходе на страницу. После этого перестает работать. Закройте функцию даже без каких-либо элементов на экране.

Вот моя простая функция:

function clickOnMarker(){   
    alert('click on marker');
    var markerName = jQuery(".entry-title").text();
    jQuery( 'div[title="' + markerName + '"]' ).trigger( 'click' ); 
    alert('Fez clique no marker');  
}


 window.onload = function() { 
   clickOnMarker();
  };

Функция считывает значение заголовка и нажимает на маркер (плагин HeroMap - WordPress ) концентрироваться. Оказывается, после однократного запуска последовательностей функция запускается даже без маркеров на карте.

Есть ли способ контролировать это поведение и всегда обеспечивать выполнение сценария только в том случае, если маркеры находятся на страница? Из того, что я видел, у window.onload такое поведение, и поэтому мой план разрушен :).

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 26 мая 2020

В итоге я нашел решение немного нестандартно :).

/************ GLOBAL VARIABELS **************/
var numAttempts = 15; // Number of attempts for the function's CallBack. Avoid Loop

/*********** CLICK ON MARKER ************/
function clickOnMarker(){

    var markerName = jQuery(".entry-title").text();  // Get text value (Title) on the Spots page

    if(numAttempts > 0){ // If that checks if there are no more attempts to CallBack the function clickOnMarker()

            if(jQuery( 'div[title="' + markerName + '"]' ).length > 0){ // If to Checks whether the element already exists in the page's DOM
                var markerName = jQuery(".entry-title").text();
                jQuery( 'div[title="' + markerName + '"]' ).trigger( 'click' ); 
                numAttempts = 10; // If the click was successful madein the marker the global variable must be reseted
                return;
            }else{
                callBackClickOnMarker(); // If the element does not exist in the DOM, it is called the CallBacK control function        
            }

    }else{
        numAttempts = 10; // If the number of attempts is exhausted the variable must be assigned the default value
        return;
    };  
};


/********** CALLBACK *************/
function callBackClickOnMarker(){
    // Function to call the function again with a delay of x mileseconds
    setTimeout(function(){
      clickOnMarker();
    }, 1500);   // Set the value in mileseconds of delay here for the action to be executed
    numAttempts -= 1; // 1 is subtracted to variable that controls the number of attempts
};


/*************** ON LOAD FUNCTION *************/
window.onload = function() { 
     clickOnMarker();
 };

Это сработало, и это то, что нужно:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...