2012-09-19 2 views
0

두 개의 onload 이벤트를 iframe에 연결하고 다른 onload 시도에서 발생하는 자바 스크립트 코드는 무엇입니까?Iframe에 Hook Onload 이벤트

리디렉션 할 첫 번째 onload가 다음 onload를 원합니다. 이것이 가능한가?

+0

이 방법은 iframe 두 온로드 이벤트를 수신입니까? – Nelson

+0

첫 번째는 iframe이로드 될 때입니다. 두 번째는 iframe이 제출되고 결과가 표시 될 때입니다. – user1684086

+0

표시되는 결과를 제어하면 결과 페이지 자바 스크립트에서 리디렉션을 수행 할 수 있습니다. – Nelson

답변

1

새로운 답변 질문을 다시 읽은 후

, 난 당신이 별도의 이벤트를 트리거하도록하는 기능을 원 깨달았다. 이것은 달성하기 쉽습니다 : 여기에 가장 중요 무엇

var ifr = document.getElementById('daiframe'); 

ifr.onload = function(){ 
    ifr.onload = function(){ 
     // do the redirect here 
    }; 
}; 


ifr.src = 'http://initial.url/'; 

내가 그랬던 것처럼 당신이 iframe이 초기 URL을 취득하기 전에 위의 온로드 코드를 설정한다는 것이다. iframe HTML 코드를 직접 작성한다고 가정 할 때 SRC 속성이 about:blank을 가리키는 지 확인하십시오.

편집 : 코멘트에 주어진 정보에서 내 이전의 경고 ...

는의는 PHP 부분은 다음과 같습니다 가정 해 봅시다 :

그 코드로 변경해야
$code = '<iframe src="http://some.url/"></iframe>'; 
echo $code; 

:

$code = '<iframe src="http://some.url/"></iframe>'; 
echo str_replace('<iframe ', '<iframe onload="ifrLoaded();" ', $code); 

?><script type="text/javascript"> 
    var alreadyLoaded = false; 
    function ifrLoaded(){ 
     if(alreadyLoaded){ 
      // do your redirect 
     }else{ 
      alreadyLoaded = true; 
     } 
    } 
</script> 

올드 응답

다음과 같은 것이 있습니까?

function appendEvent(el, name, fn){ 
    if(typeof el[name] == 'function'){ 
     var oldfn = el[name]; 
     el[name] = function(){ 
      oldfn.apply(this, arguments); 
      fn.apply(this, arguments); 
     }; 
    }else{ 
     el[name] = fn; 
    } 
} 


var ifr = document.getElementById('daiframe'); 

appendEvent(ifr, 'onload', function(){}); 
appendEvent(ifr, 'onload', function(){ /* do the redirect */ }); 

ifr.src = 'http://target.url/'; // since onload fires only after the URL is set 

A working JSFiddle...

+0

나는 OP가 찾고 있다고 생각하지 않는다. 그는 하나의 이벤트 처리기를 원하지만 다른 로딩에서 다른 동작을 원합니다. –

+0

예, 편집 된 답변. – Christian

+0

ifr.src = 'http : //initial.url/';; 나는 iframe을 호스팅하지 않습니다. 코드 – user1684086

관련 문제