2010-03-02 8 views
1

퀴즈를 만들고 있는데 퀴즈에서 타이머로 플래시 동영상 (움직이는 시계)이 있습니다. 퀴즈 시간이 다지나 갔는지 확인하기 위해 매시간마다 시계를 폴링합니다.IE8에서 javascript로 플래시에서 변수를 가져 오는 데 문제가 있습니다.

이 기능에 대한 코드는 다음과 같습니다 : 모든

$(window).load(function() { 
    var flashMovie = getFlashMovieObject(flashId); 
    var timeElapsed = flashMovie.GetVariable("timeElapsed"); 
    var timeSet = flashMovie.GetVariable("countdown"); 
    var degrees = flashMovie.GetVariable("degrees"); 
    var timerStatus = flashMovie.GetVariable("timerStatus"); 
}); 

첫째, 그냥 플래시 동영상 개체를 가져옵니다 다음 개체에 대한 몇 가지 방법을 호출 (간체). Firefox (pc & mac), Safari (mac)에서 제대로 작동하지만 pc의 IE8에서는 '3 행의 예기치 않은 오류'(또는 flashMovie 객체를 사용하는 다른 모든 행)가 반환됩니다.

는 getFlashMovieObject()의 코드 기능은 다음과 같습니다

function getFlashMovieObject(movieName) 
{  
    if (navigator.appName.indexOf ("Microsoft") !=-1) { 
     return window[movieName]; 
    } 

    return document[movieName]; 
} 

어떤 도움에 감사드립니다!

업데이트 : IE8 캐시를 새로 고치면 캐시가 다시로드된다는 것을 알아 냈습니다. 그렇지 않으면 처음 실패하고 이후의 모든 다시로드가 정상적으로 작동합니다. 캐시가이 문제를 어떻게 해결할 수 있는지 이해할 수 없습니다.

+0

Windows 7에서 64 비트 IE8을 사용하고 있습니까? – Robusto

+0

아니요, 저는 Windows XP Professional에 32 비트 IE8을 사용하고 있습니다 – Indyber

답변

1

내 경험상 getFlashMovieObject 함수는 일부 브라우저에서 일부 단점이 있으며 여러 버전을 발견했습니다. 이 사람은 대부분의 브라우저에서 꽤 잘 공정 보인다 : 당신이 jQuery를 사용하는 일이 있다면

function getFlashMovieObject(movieName){ 
    if(document.embeds[movieName]) 
    return document.embeds[movieName]; 
    if(window.document[movieName]) 
    return window.document[movieName]; 
    if(window[movieName]) 
    return window[movieName]; 
    if(document[movieName]) 
    return document[movieName]; 
    return null; 
} 

, 나는 모든 브라우저에서 작동하는 것 같다

$("#flashobject")[0].GetVariable("timeElapsed"); 

만큼 간단한 무언가를 발견했다.

+1

나는 그것을하는 방법을 좋아하지만 슬프게도 제 실수에는 아무런 영향을 미치지 않습니다. 두 솔루션을 모두 시도했지만 오류가 계속 발생합니다. – Indyber

+0

내 시간을 절약했습니다! 사파리에서 일하고있어! –

0

추측하기에 IE는 swf가 완전히로드되기 전에 window.load 이벤트를 너무 일찍 잘못 실행합니다. 그러면 캐시를 지우면 오류가 발생합니다.

SWFObject을 사용하여 플래시를 삽입 한 다음로드 된 콜백을 사용하여 플래시 객체가 실제로 사용 가능한시기를 알 수 있습니다.

관련 문제