gpt4 book ai didi

javascript - Safari 6.1 和 7 上的 SWFObject, "Don' t 信任 Flash"选项

转载 作者:行者123 更新时间:2023-11-29 14:54:48 28 4
gpt4 key购买 nike

SWFObject 非常擅长检测特定的 Flash 版本,使用类似的东西:

if (swfobject.hasFlashPlayerVersion("10")) { ... }

我们使用它为支持它的人提供 Flash 内容,为不支持它的人提供 JS 驱动的内容。

但是,OSX 上的 Safari 6.1 和 7 会在首次导航到包含 Flash 内容的页面时显示一个弹出窗口,询问您是否信任该插件。

如果我选择“否”,那么上面的检测脚本仍然会通过,但 Safari 不会实际显示 Flash 内容,从而完全破坏回退脚本。

有解决办法吗?

最佳答案

在某些情况下,它可能像 checking whether the embed was successful 一样简单.这可以通过 SWFObject 的 createSWF 方法同步完成。

swfobject.customEmbed = function (swfLoc, id, w, h, version, color){
if (swfobject.hasFlashPlayerVersion(version)){
var so = swfobject.createSWF({data:swfLoc,width:w,height:h}, {bgcolor:color},id);
//swfobject.createSWF returns an HTML element, not a boolean
if(so){ return true; }
}
return false;
}

var success = swfobject.customEmbed("mymovie.swf", "flashcontent", "550", "400", "10", "#FFF");

if(!success){
//embed failed! do something appropriate
}

警告:当 SWFObject 告诉您 embed 是否成功时,它具体指的是是否创建了新的 HTML 标记,而不是 SWF 是否已经实际加载(例如,SWFObject 会告诉您它是即使 SWF 是 404'd 也是成功的)。

确定 SWF 是否实际加载的唯一方法是 poll the SWF for loading percentage :

function swfLoadEvent(fn){
//Ensure fn is a valid function
if(typeof fn !== "function"){ return false; }
//This timeout ensures we don't try to access PercentLoaded too soon
var initialTimeout = setTimeout(function (){
//Ensure Flash Player's PercentLoaded method is available and returns a value
if(typeof e.ref.PercentLoaded !== "undefined" && e.ref.PercentLoaded()){
//Set up a timer to periodically check value of PercentLoaded
var loadCheckInterval = setInterval(function (){
//Once value == 100 (fully loaded) we can do whatever we want
if(e.ref.PercentLoaded() === 100){
//Execute function
fn();
//Clear timer
clearInterval(loadCheckInterval);
}
}, 1500);
}
}, 200);
}

//This function is invoked by SWFObject once the <object> has been created
var callback = function (e){

//Only execute if SWFObject embed was successful
if(!e.success || !e.ref){ return false; }

swfLoadEvent(function(){

//Put your code here
alert("The SWF has finished loading!");

});

};


swfobject.embedSWF("movie.swf", "flashcontent", "550", "400", "10", false, false, false, false, callback);

如果这些方法中的任何一种对您有用,请回复,我很好奇结果。谢谢

关于javascript - Safari 6.1 和 7 上的 SWFObject, "Don' t 信任 Flash"选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19759391/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com