将Flash转换为HTML5,如果浏览器不支持HTML5,请继续使用Flash

时间:2013-07-31 07:25:06

标签: html5 flash compatibility

我公司在整个网站上使用Flash。如果浏览器不支持HTML5,我们希望升级到HTML5,同时继续使用Flash。 Flash使用Google Swiffy进行转换。

我尝试了很多解决方案,但它们太复杂了。这是我目前的想法:我在try/catch语句中创建了一个新的Audio对象,因此如果浏览器支持它,它将打印由Google Swiffy翻译的HTML5代码,但如果它跳转到catch语句,这意味着浏览器不支持HTML5,我将使用旧代码。这是我的代码:

try {
    new Audio();
    // Google Swiffy code here

} catch (er) {
    // Use many lines of "document.write" for old Flash code
    // Many lines for Flash code
}

但是,我无法将Swiffy运行时导入到代码中,因为不支持的浏览器会抱怨运行时脚本,并且它会立即停止。所以我改变了我的代码,像这样手动导入脚本,但我不知道为什么它不起作用:

try {
    new Audio();

    var js = document.createElement("script");

    js.onload = function() {
        document.body.appendChild(js);

        // Google Swiffy code here
    }

    js.type = "text/javascript";
    js.src = "https://www.gstatic.com/swiffy/v5.2/runtime.js";



} catch (er) {
    alert(er);

    <!--
        displayFlash('abc.swf', 420, 450);
    //-->

    document.write("<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http:\/\/fpdownload.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,0,0\" width=\"420\" height=\"450\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"always\"><param name=\"movie\" value=\"..\/..\/images\/thap_deluxe.swf\"><param name=\"wmode\" value=\"transparent\"><param name=\"quality\" value=\"high\"><embed src=\"..\/..\/images\/thap_deluxe.swf\" wmode=\"transparent\" menu=\"false\" quality=\"high\" width=\"420\" height=\"450\" allowscriptaccess=\"always\" type=\"application\/x-shockwave-flash\" pluginspage=\"http:\/\/www.macromedia.com\/go\/getflashplayer\"><\/object>");
}

请建议我任何更好的解决方案,或者请教我如何解决当前解决方案的问题。谢谢。

1 个答案:

答案 0 :(得分:0)

我认为这是因为你的js文件永远不会加载 它会在您将其附加到文档后加载。

试试这样:

try {
    new Audio();

    var js = document.createElement("script");

    js.type = "text/javascript";
    js.src = "https://www.gstatic.com/swiffy/v5.2/runtime.js";

    document.head.appendChild(js); // Add it to the head.

} catch (er) {
    alert(er);

    <!--
        displayFlash('abc.swf', 420, 450);
    //-->

    document.write("<object classid=\"clsid:d27cdb6e-ae6d-11cf-96b8-444553540000\" codebase=\"http:\/\/fpdownload.macromedia.com\/pub\/shockwave\/cabs\/flash\/swflash.cab#version=6,0,0,0\" width=\"420\" height=\"450\" align=\"middle\"><param name=\"allowScriptAccess\" value=\"always\"><param name=\"movie\" value=\"..\/..\/images\/thap_deluxe.swf\"><param name=\"wmode\" value=\"transparent\"><param name=\"quality\" value=\"high\"><embed src=\"..\/..\/images\/thap_deluxe.swf\" wmode=\"transparent\" menu=\"false\" quality=\"high\" width=\"420\" height=\"450\" allowscriptaccess=\"always\" type=\"application\/x-shockwave-flash\" pluginspage=\"http:\/\/www.macromedia.com\/go\/getflashplayer\"><\/object>");
}

//或者如果你想要它在体内,除非你的整个try / catch已经在window.onload

替换

document.head.appendChild(js);

使用:

window.onload = function(){
    document.body.appendChild(js);
}