2013-07-26 2 views
0

Я хочу отправить форму, когда она загружена, не дожидаясь загрузки страницы (она занимает очень много времени). Вот мой код, это нехорошо, я знаю ... но я не могу думать ни о чем другом.Вызывать функцию при загрузке определенного элемента

var element = document.getElementsByName("redirect"); 

while(!element) { 
    element = document.getElementsByName("redirect"); 
}; 

element[0].form.submit(); 

Есть ли лучший способ определить, загружен ли этот элемент формы?

+0

'while (! Element [0])' it should be ... hmm – VixinG

ответ

3

Вы можете использовать JQuery DOM готовый (только DOM, не дожидаясь загрузки изображений и других ресурсах):

$(function(){ 
    var element = document.getElementsByName("redirect"); 
    element[0].form.submit(); 
}) 

Или без DOM готового события. Вы можете использовать рекурсию;

function checkFormExist(){ 
    var element = document.getElementsByName("redirect"); 
    if(element[0] && element[0].form){ 
    element[0].form.submit(); 
    } else { 
    setTimeout(checkFormExist, 300);//repeat check after 0.3 seconds 
    } 
} 
checkFormExist() 

Не так красиво, но лучше, чем во время цикла.

+0

Я попробую этот – VixinG

+0

Спасибо за второй, определенно лучше, чем в цикле: D решил – VixinG

0

В зависимости от элемента вы должны иметь возможность установить атрибут onload на обратный вызов javascript. Например:

<form id="submit_me_when_i_load" onload="submit_form"> 
... 
</form> 

Затем написать функцию Java Script над ним где-нибудь, function submit_form(){}.

+0

Вход на другой сайт, я пытаясь написать Usercript для моего tampermonkey :) – VixinG

Смежные вопросы