웹 사이트 상호 작용 연구에 사용되는 mockup-webpage의 경우 JavaScript를 사용하여 mockup message-stream을 만들었습니다. 이 메시지 스트림은 IFrame에로드되며 미리 설정된 간격으로 이미지를 표시하고 페이지 하단에 새 이미지를 배치 한 후 페이지 하단으로 스크롤해야합니다. 이미지를 표시하는 것은 제공된 스크립트를 사용하면 매우 잘 작동합니다. 그러나 Chrome과 IE 모두 페이지를 맨 아래로 스크롤하는 데 문제가있는 것 같습니다. 이미지가 첨부 되 자마자 페이지 하단으로 스크롤하고 싶지만, 가끔 작동하는 것처럼 보였기 때문에 지금은 5ms 지연을 추가했습니다. 내 질문은 다음과 같습니다.
다음 함수가 사용되며 trypost ()가 onLoad에서 시작됩니다.
function scrollToBottom(){
window.scrollBy(0,document.body.scrollHeight);
}
function trypost(){
point = point + 1;
if(point < interval.length){
//create and append a new image
var newImg = document.createElement("IMG");
newImg.src = "images/"+images[point]+".png";
document.getElementById('holder').appendChild(newImg);
//create and append a return
var br = document.createElement("br");
document.getElementById('holder').appendChild(br);
//time scroll to bottom (after an arbitrary 5 seconds)
var stb = window.setTimeout(scrollToBottom, 5);
//time next post
var nextupdate = interval[point]*400;
var tp = window.setTimeout(trypost, nextupdate);
}
}
내 스크립트 섹션에는 최소한 다음 변수가 포함되어 있습니다.
var point = -1;
var interval = [10, 10, 15];
var images = ["r1", "a1", "r2"];
이 질문은 IE에서 setTimeout을 올바르게 사용하는 방법에 설명 된 프로젝트의 연속입니다 .
아래쪽으로 스크롤하는 것은 항상 엄청나게 큰 위쪽 오프셋 (예 :)으로 스크롤하는 것과 같습니다 999999
.
iframe.contentWindow.scrollTo( 0, 999999 );
또한이 게시물을 참조하십시오 : 자바 스크립트로 iframe 스크롤?
스크롤이 너무 일찍 발생하면 이미지가 아직로드되지 않았기 때문일 수 있습니다. 따라서 추가 된 이미지 를 배치 하지 않고로드하자마자 스크롤해야 합니다 . 더하다
newImg.onload = function() { triggerScrolling(); };
생성 후 newImg
속성을 할당하기 전에 src
.
스크롤을 트리거하는 데 여러 이벤트가 필요한 경우 "이벤트 수집기"를 사용해야 할 수 있습니다.
function getEventCollector( start, trigger ) {
return function() {
if ( --start == 0 ) { trigger(); )
};
}
그런 다음 다음과 같이 사용할 수 있습니다.
var collector = getEventCollector( 2, function() { triggerScrolling(); } );
newImg.onload = collector;
window.setTimeout( collector, 100 );
이 방법 triggerScrolling()
은 적어도 100ms 후에 호출 되며 이미지가로드 된 후에는 collector
triggerScrolling ()이 결국 호출되도록 두 번 호출해야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다