2012-12-10 2 views
0

object 태그를 통해 html 파일을 추가하고 있습니다. object 태그를 둘러싸는 div는 숨겨져 있습니다 (display : none).onpageshow는 webkit에서만 올바르게 작동합니다 (화면 상에 보이는 경우에만 함수를 실행 함).

내가 겪고있는 문제는 HTML 객체의 본문 태그에 onpageshow 이벤트를 넣었지만 브라우저에서 다르게 작동한다는 것입니다.

  • 파이어 폭스는 즉시 HTML이 객체 내에서로드로 기능을 재생하는 것

  • 내가 (내가 원하는 것입니다) 사업부를 숨기기를 취소 전용 (사파리/크롬)을 재생

    웹킷

  • Opera/IE10은이 기능을 전혀 재생하지 않습니다.

화면에 표시 될 때만 기능을 실행하는 다른 방법이 있습니까?

다음은 데모입니다. 내가 뭘하려고하는지.

주 창의 코드. 포함 개체

<script type="text/javascript"> 
    function callme() 
    { 
     alert("running"); 
    } 
</script> 
</head> 

<body onpageshow="callme();"> 
</body> 

에 대한

<script type="text/javascript"> 
    function runthis() 
    { 
     if (document.getElementById("wrapper").style.display == "none") 
     { 

      document.getElementById("wrapper").style.display = "block"; 
      document.getElementById("hide").innerHTML = 'Div showing'; 

     } 
     else 
     { 
      document.getElementById("wrapper").style.display = "none"; 
      document.getElementById("hide").innerHTML = 'Div hidden'; 
     }   
    } 

    function removeObject() 
    { 
     if(document.getElementById("wrapper").innerHTML == '') 
     { 
      document.getElementById("wrapper").innerHTML = '<object id="test_object" name="name" data="frame.html" onshow="callme();"></object>'; 
      document.getElementById("add").innerHTML = 'Object added'; 
     } 
     else 
     {   
      document.getElementById("wrapper").innerHTML = ''; 
      document.getElementById("add").innerHTML = 'Object removed'; 
     } 
    } 
</script> 
<body> 
    <div id="wrapper" style="display:none"></div> 
    <div> 
     <button type="button" onclick="runthis();">Show/Hide</button> 
     <button type="button" onclick="removeObject();">Add/Remove</button> 
     <div id="status"><span>Status: </span><span id="hide">Div hidden</span> | <span id="add">Object removed</span></div> 
    </div> 
</body> 

코드 그래서 기본적으로 경고 사업부가 표시되고 객체가로드 된 경우에만 실행해야합니다.

+1

코드를 포함 시키십시오. 질문을 쉽게 대답 할 수 있습니다. –

+0

확실히, 나는 그것을 원래 게시물에 포함 시켰습니다. 나는 그것이 의미가 있기를 바랍니다. – Jason

답변

0

다른 경로를 사용하여 대신 postMessage를 사용했습니다.