2010-04-26 4 views
0

ExternalInterface를 사용하여 페이지에서 특정 항목을 클릭 할 때마다 mp3 플레이어에서 사운드를 일시 중지하는 기능을 설정했지만 IE에서는 문제가 있습니다.동영상을 클릭 할 때 jQuery 기능 시작하기

설정은 다음과 같습니다. RSS를 사용하여 YouTube 동영상 목록을 불러오는 비디오 페이지가 있습니다. 가장 최근의 비디오는 "디스플레이"라는 div의 페이지에 표시됩니다. 그런 다음 피드의 나머지 모든 동영상이 미리보기 이미지 및 링크로 표시됩니다. 하나를 클릭하면 기본 '디스플레이'동영상이 대체되고 재생이 시작됩니다. 모두 잘 작동합니다.

내가 원하는 것은 비디오가 시작될 때마다 페이지의 MP3 플레이어가 음악을 일시 중지하는 것입니다.

ExternalInterface 기능이 제대로 작동합니다. 링크 중 하나를 클릭 할 때마다 mp3 플레이어가 멈추고 비디오가 시작됩니다.

문제는 MAIN 비디오를 클릭했을 때 멈추고 싶다는 것입니다. 분명히 YouTube에서로드 된 외부 비디오이기 때문에 FLA에 액세스하여 자체 ExternalAccess 코드를 추가 할 수 없습니다.

비디오 객체에 ID를 추가 한 다음 jQuery의 선택기로 사용하여 stopMovie 함수를 호출하려고했습니다 ... 아니요. 클래스를 추가 할 때 클래스를 클릭 할 때 stopMovie 함수를 호출하려고했습니다. div에 클릭 기능을 넣으려고 시도했지만 동영상이로드되지 않습니다. 아무 것도 작동하지 않습니다. 기본 비디오를 제거하고 빈 div가 있으면 div를 클릭하면 mp3 플레이어가 멈 춥니 다. 그러나 div에 비디오를로드하고 클릭하면 아무 일도 일어나지 않습니다 (IE에서는 ...) FF).

분명히 jQuery는 비디오가 클릭되었다는 메시지를받지 못합니다. 어떤 제안이나 문제 해결 방법?

액션 스크립트 :

import flash.external.ExternalInterface; 

ExternalInterface.addCallback("stopMovie", pauseSound); 

function pauseSound(str:String):void { 
    if (str == "stop") { 
      if (my_channel) { 
      song_position = my_channel.position; 
      my_channel.stop(); 
      song_paused=true; 
      } 
    } 
} 

JQuery와 코드 :

function getFlashMovie(movieName) { 
    var isIE = navigator.appName.indexOf("Microsoft") != -1; 
    return (isIE) ? window[movieName] : document[movieName]; 
} 


function stopMovie() { 
    getFlashMovie('audio').stopMovie("stop"); 
      } 

// 내가 //

$('#video_player').live("click", function(){ 
    stopMovie(); 
    }); 
$('.stopper').live("click", function(){ 
    stopMovie(); 
    }); 
$('#curVideo').live("click", function(){ 
    stopMovie(); 
    }); 
$('#display object').live("click", function(){ 
    stopMovie(); 
    }); 

html로 시도 모든 방법을 보여주는 :

<div id="video_player"> 
<div id="display"> 

(some PHP code here to call the feed) 

<object id="curVideo" class="stopper" width="410" height="332"><param name="movie" value="<?php echo $videolink; ?>"></param><param name="allowFullScreen" value="true"></param><param name="wmode" value="transparent"></param><param name="allowscriptaccess" value="always"></param><embed src="<?php echo $videolink; ?>" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" wmode="transparent" width="410" height="332"></embed></object> 
</div> 
</div> 
+1

지금은 해결 방법을 제시했지만, 이상적인 것은 아니지만, 장시간에 걸쳐 해결할 수 있습니다. 누군가가 여전히이 솔루션에 대한 실제 솔루션을 제안 할 수 있기를 바랍니다. 그냥 작동 시키려면 비디오 div (불투명도는 .01로 설정 ... 투명하게 div는 IE에서 클릭 할 수 없음)로 설정하고 클릭 할 수있게 만들어야합니다. 클릭하면 음악을 종료하는 기능이 실행 된 다음 자동 시작으로 설정된 동일한 비디오 클립으로 비디오 div가 다시로드되므로 재생이 시작됩니다.이것은 실제로 비디오를 다시로드하는 것을 의미하므로 다시 깜박입니다. – Nay

답변

0

IE가 실제 swf 객체에 대한 클릭 이벤트를 발생시키지 않는다고 생각합니다.

대신 #display div에 이벤트 처리기를 넣으려고 했습니까?

+0

예, 먼저 시도했지만 작동하지 않으면 video_display div에 넣으려고했습니다. div가 비어있는 경우 div 중 하나를 클릭하면됩니다. 사실, 만약 당신이 비디오 객체 주위에 경계선의 작은 비트 (div를 클릭하지만 플래시 객체는 아님)를 클릭하면 작동합니다. 하지만 jQuery는 div 내부의 객체를 선택하지 않고 click 이벤트를 상속받습니다. – Nay

1

당신의 문제를 해결할 수 있을지 모르겠지만 가치가있는 부분에 대해 - 객체가 항상 최상위가 될 것이고 주변 HTML 구조가 Z- 색인을 기반으로 표시하는 것을 허용하지 않는 IE에 플래시 문제가 있습니다. CSS. 내가 한 일은 wmode 매개 변수를 투명하게 설정하고 수정 한 것입니다. 아마도 IE에서 비디오가 최상위에 있고 이벤트가 묶여있는 주변 div가 묻혀있는 비슷한 상황이 여기에 있습니다.

+0

나는 wmode를 transparent로 설정하는 이유를 생각했지만 전혀 영향을 미치지 않았습니다. 나는 클릭 할 수있는 동영상의 TOP에 투명한 DIV를 넣는 것을 고려해 보았지만 일단 클릭하면 사라졌습니다 ...하지만 사용자는 두 번째 클릭하여 동영상 아래에서 시작해야합니다. 정말이게 복잡 할 수 있다고 나는 믿을 수 없다 ... – Nay

관련 문제