2013-10-10 2 views
0

내 웹 페이지에 제출 버튼이 많이 있습니다. 나는 이것을 시도했다 :자바 스크립트를 사용하여 웹 페이지에서 여러 제출을 수행하는 방법은 무엇입니까?

javascript:var x=document.getElementsByTagName("input"); 
for(var i=0;i<x.length;i++) { 
    if (x[i].type == 'submit') { 
     x[i].click(); 
    } 
}; 

그것은 시작하지만 매우 빠르다. 또는 많은 시간, 내 웹 페이지가 멈 춥니 다. 나는 각 제출 사이에 일시 중지 또는 수면을 생각했습니다. 내가 봤 거든 스택 오버플로에서 스레드를 많이 읽어보십시오. 자바 스크립트는 일시 정지하거나 잠을 자지 않습니다. 타임 아웃과 같은 몇 가지 대안이 있지만 많은 사람들이이를 사용하지 말 것을 제안했습니다. 나는 잠시 멈추거나 잠을 자려고하는 것이 좋지 않다는 것을 이해했다.

그래서 지금은 아이디어가 없습니다. 어떻게 여러 차례 제출할 것인가? 누구든지 내게 올바른 방향을 줄 수 있니? 미리 감사드립니다.

+0

반환 유형을 추가하거나 false를 반환하거나 내 관점에서 볼 때 분명히 도움이되는 true를 반환합니다. –

+0

페이지의 모든 제출 버튼을 한 번에 클릭 하시겠습니까? 보통 이것은 필요하지 않습니다. – Oswald

+0

왜 여러 번 제출해야합니까? 페이지의 모든 입력을 직렬화하여 한꺼번에 보낼 수 없습니까? –

답변

0

는 약간의 지연이 50 밀리 시도하거나 당신은 매우 운이 아니라면

javascript:var x=document.getElementsByTagName("input"); 
for(var i=0;i<x.length;i++) { 
    if (x[i].type == 'submit') { 
     setTimeout(function() { 
      x[i].click(); 
     }, 50); 
    } 
}; 
+0

작동하지 않습니다. 페이지가 아무 것도 제출하지 않습니다. – narayanpatra

0

이 작동하지 않습니다. 각 제출은 페이지를 다시로드합니다. 다시 너무 빨리 제출하면 첫 번째 페이지로드가 중단되고 관련 처리가 취소되거나 일부만 완료 될 수 있습니다. 제출을 완료하기 전에 각 제출이 완료 될 때까지 기다리거나 모든 데이터를 하나의 블록으로 보내야합니다.

예를 들어 50ms의 임의의 지연을 추가하는 것은 때때로 충분할 수도 있지만 다른 경우에는 불필요하게 길거나 길어질 수 있습니다.

또는 AJAX로 데이터를 보내 각 응답을 기다릴 수도 있습니다. 이것은 더 신뢰할 수 있지만 각 제출은 왕복과 처리 시간을 더한 것이기 때문에 제출하는 총 시간은 말하자면 100ms에서 1.5 초에서 2 초가 될 수 있습니다.

첫 번째 제출 - 100ms에서 모든 데이터를 보낼 수있는 단일 제출과 비교하십시오.

관련 문제