2010-01-12 3 views
0

현재 프로젝트에서 콘텐트 상자 위에 새로운 내용을로드하기 위해 ajax 스크립트를 실행하는 콘텐트 상자 위에 일련의 탭이있는 홈 페이지 작업을하고 있습니다. 그러나 이러한 페이지 중 일부에는 SWFObject라는 플래시 객체가 포함되어 있으며, 아약스 스크립트가 페이지를 호출하면 SWFObject 자바 스크립트가 실행되지 않고 플래시 지원 안 됨 오류 메시지가 표시됩니다.Ajax를 다시로드하여 SWFObject를 실행

각 비디오 호출 (하나의 함수를 설계하고 변수를 전달하는 것만 큼)에 대한 함수를 정의하고 함수를 AJAX 함수의 일부로 호출하도록 시도했지만 동일한 결과가 남았습니다.

어떻게 해결할 수 있습니까? 나는 SWFObject 이외의 다른 것을 사용하는 것에 반대하지 않는다. 비록 그것이 현재 가장 좋은 해결책이라고 믿게되었다. 모든 도움은 진심으로 감사드립니다.

+0

콘텐츠를 동적으로로드합니까, 아니면 같은 페이지에서로드합니까? – Skawful

+0

동적으로. 메인 페이지는 컨텐트의 쉘 역할을합니다. 탭은 asp 데이터베이스 호출 또는 하드 코딩 된 참조 용 컨텐츠 전용 asp 페이지를 통해 생성됩니다. – TH58PZ700U

답변

1

편집 : 나는 나에게하자 ... 질문을 오해 reanswer :

내용이 스크립트가 전혀 실행되지 않습니다 반환 될 때 문제입니다.

A 경우 : 당신은 페이지의 컨트롤에있는 내용/자바 스크립트 (이 같은 소리하는) 해당 페이지가 당신의 SWFObject가 내장 실행을 시작하는로드되면

당신은 콜백하는 수단을 제공해야한다.

는 케이스 B

//note the jquery dependency 
$.post('url', function(data) 
{ 
    $(myDiv).html(data); 
    loaded(); 
}); 

function loaded() 
{ 
    swfobject.embedSWF("myContent.swf", "flashContent", "300", "120", "9.0.0"); 
} 

(플래시 페이지에)와 쉘 페이지에서 다음과 같이 약간을 볼 수 있었다 : 당신은 그 페이지의 제어 할 수 없습니다 ...

일부 libraroies (jquery는 제외 될 수 있습니다.)는 '스크립트 실행'을 옵션으로 허용합니다 ... 나는 스크립트 태그와 eval을 구문 분석합니다. (...) 그들 - 나는 이것에 강력하게 제안 할 것이지만 그것은 과거에 나를 위해 일했다.

+0

내가 현재 테스트하고있는 편집을 읽을 때 생각이 들었습니다.모든 콘텐츠 페이지에 loadFlash()라는 함수가 정의되어 있고 페이지를로드 할 때 해당 함수를 실행하면 loadFlash() 내에서 실제로 무엇을하는지 정의 할 수 있습니다 (예 : 페이지에 3 개의 동영상이있는 경우). , 3 개의 기능을 실행 시키면 페이지에 영화가없는 경우 그냥 종료하십시오. 그게 효과가 있는지 알게 될 것입니다. – TH58PZ700U

0

좋아, Skawful의 응답은 간단한 페이지에서 나에게 도움이되지만 Dynamic Drive에서 사용하는 Ajax 스크립트는 나를 수정하고 동일한 기능을 얻는 방법에 대해 나를 신비하게 여기고 있습니다. 나는 클라이언트 쪽보다 서버 측 코더에 가깝다는 것을 인정해야하며 자바 스크립트는 나를 당황하게한다.

var bustcachevar=1 //bust potential caching of external pages after initial request?(1=yes, 0=no) 
var loadedobjects="" 
var rootdomain="http://"+window.location.hostname 
var bustcacheparameter="" 

function ajaxpage(url, containerid){ 
    var page_request = false 
    if (window.XMLHttpRequest) // if Mozilla, Safari etc 
     page_request = new XMLHttpRequest() 
    else if (window.ActiveXObject){ // if IE 
     try { 
      page_request = new ActiveXObject("Msxml2.XMLHTTP") 
     } 
     catch (e){ 
      try{ 
       page_request = new ActiveXObject("Microsoft.XMLHTTP") 
      } 
     catch (e){} 
     } 
    } 
    else 
    return false 
    page_request.onreadystatechange=function(){ 
    loadpage(page_request, containerid) 
    } 
    if (bustcachevar) //if bust caching of external page 
    bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime() 
    page_request.open('GET', url+bustcacheparameter, true) 
    page_request.send(null) 
} 

function loadpage(page_request, containerid){ 
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)) 
document.getElementById(containerid).innerHTML=page_request.responseText 
} 

function loadobjs(){ 
if (!document.getElementById) 
return 
for (i=0; i<arguments.length; i++){ 
var file=arguments[i] 
var fileref="" 
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding 
if (file.indexOf(".js")!=-1){ //If object is a js file 
fileref=document.createElement('script') 
fileref.setAttribute("type","text/javascript"); 
fileref.setAttribute("src", file); 
} 
else if (file.indexOf(".css")!=-1){ //If object is a css file 
fileref=document.createElement("link") 
fileref.setAttribute("rel", "stylesheet"); 
fileref.setAttribute("type", "text/css"); 
fileref.setAttribute("href", file); 
} 
} 
if (fileref!=""){ 
document.getElementsByTagName("head").item(0).appendChild(fileref) 
loadedobjects+=file+" " //Remember this object as being already added to page 
} 
} 
} 

이것은 아약스 스크립트입니다. 그

<a id="media" href="javascript:ajaxpage('media.asp','maincontent');" onclick="selector2010('media');">Media</a> 

같이 링크에서 불러 media.asp의 함수 loadFlash()이고;

0

그냥 $('selectorofobject) .load ([stringified JSON])`요청을 이미 포함 된 SWF에서 사용하십시오. swf 객체를 다시로드 할 필요가 없습니다. 로드 메소드가 있습니다.

관련 문제