Javascript 使用Ajax重新加载执行SWFObject

Javascript 使用Ajax重新加载执行SWFObject,javascript,ajax,flash,swfobject,Javascript,Ajax,Flash,Swfobject,对于我当前的项目,我正在处理一个主页,在内容框上方有一系列选项卡,每个选项卡都执行一个ajax脚本以将新内容加载到内容框中。但是,其中一些页面包含一个用SWFObject调用的flash对象,当ajax脚本调用该页面时,SWFObject javascript不会被执行,我将看到一条无flash支持错误消息 我曾尝试为每个视频调用定义一个函数(除了设计单个函数并向其传递变量之外),并将该函数作为ajax函数的一部分进行调用,但结果都是一样的 有什么办法解决这个问题吗?我不反对使用SWFObjec

对于我当前的项目,我正在处理一个主页,在内容框上方有一系列选项卡,每个选项卡都执行一个ajax脚本以将新内容加载到内容框中。但是,其中一些页面包含一个用SWFObject调用的flash对象,当ajax脚本调用该页面时,SWFObject javascript不会被执行,我将看到一条无flash支持错误消息

我曾尝试为每个视频调用定义一个函数(除了设计单个函数并向其传递变量之外),并将该函数作为ajax函数的一部分进行调用,但结果都是一样的


有什么办法解决这个问题吗?我不反对使用SWFObject以外的东西,尽管我一直认为这是目前最好的解决方案。衷心感谢您的帮助。

编辑:我误解了这个问题。。。让我再次回答:

问题是当返回内容时,脚本根本不会运行

案例A: 您可以控制页面内容/javascript(听起来像)

加载这些页面后,您应该提供一种回调方法,以开始执行SWFObject嵌入

它可能看起来有点像这样(在使用flash的页面上)

在shell页面上

//note the jquery dependency
$.post('url', function(data)
{
    $(myDiv).html(data);
    loaded();
});
案例B:您无法控制这些页面


一些库(可能不包括jquery)允许“运行脚本”作为选项。。。我很确定他们会解析脚本标记并评估(…)它们-我强烈建议不要这样做,但这在过去对我是有效的。

好的,Sksterear的回答对我来说非常有用,只需一个简单的页面,但是我在Dynamic Drive中使用的Ajax脚本让我迷惑,不知道如何修改它并获得相同的功能。我必须承认,我更像是一个服务器端的程序员,而不是客户端,javascript让我感到困惑

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
}
}
}
var bustcachevar=1//bust初始请求后外部页面的潜在缓存?(1=yes,0=no)
var loadeobjects=“”
var rootdomain=“http://”+window.location.hostname
var bustcacheparameter=“”
函数ajaxpage(url,容器ID){
var page_请求=false
if(window.XMLHttpRequest)//if Mozilla、Safari等
page_request=newXMLHttpRequest()
else if(window.ActiveXObject){//if IE
试一试{
page_request=newActiveXObject(“Msxml2.XMLHTTP”)
} 
捕获(e){
试一试{
page_request=newActiveXObject(“Microsoft.XMLHTTP”)
}
捕获(e){}
}
}
其他的
返回错误
page_request.onreadystatechange=函数(){
loadpage(请求页,集装箱ID)
}
if(bustcachevar)//外部页面的if-bust缓存
bustcacheparameter=(url.indexOf(“?”)=-1)?“&”+新日期().getTime():“?”+新日期().getTime()
页面请求。打开('GET',url+bustcacheparameter,true)
页面_请求发送(空)
}
函数加载页(请求页,容器ID){
if(page_request.readyState==4&&(page_request.status==200 | window.location.href.indexOf(“http”)==1))
document.getElementById(containerid).innerHTML=page\u request.responseText
}
函数loadobjs(){
如果(!document.getElementById)
返回
对于(i=0;i

而media.asp上的函数是loadFlash();

只需使用
$('selectorofobject
).load(
[stringized JSON]
)`请求已嵌入的swf。无需重新加载swf对象。有一个加载方法。

您是动态加载内容还是从同一页加载内容?动态加载。主页充当内容的外壳。选项卡通过asp数据库调用或硬编码和仅引用内容的asp页生成。a读取您当前正在测试的编辑时发生ght。如果我使所有内容页中都定义了一个名为loadFlash()的函数,并在加载页面时运行该函数,则可以在loadFlash()中定义它实际上是做什么的,例如,如果我在页面上有3部电影,让它运行它们的3个功能,然后如果页面上没有电影,让它退出。我们来看看这是否有效。
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>