-3

所以我有这个 javascript/jquery 在显示 swf 文件之前进行延迟,但它不工作,当我说不工作时,我的意思是它什么都不做......

这是脚本:

        <script src="http://code.jquery.com/jquery-1.8.0.min.js" ></script>
        <link href="http://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css" >

<script>
function Func1()
{
$('#stage').html("<OBJECT style="z-index:2; position:absolute; top:20%; left:44%;" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="320" HEIGHT="240" id="rice" ALIGN="">
<PARAM NAME=movie VALUE="rice.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#333399> <EMBED src="rice.swf" quality=high bgcolor=#333399 WIDTH="320" HEIGHT="240" NAME="rice" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT>");
}

function Func1Delay()
{
setTimeout("Func1()", 10000);
}

</script>

这是我调用函数的方式:

<body onload="Func1Delay()" >

它似乎没有做任何事情......在此先感谢。

4

4 回答 4

7

您必须转义"in object 标记,否则会出现语法错误

$('#stage').html("<OBJECT style=\"z-index:2; position:absolute; top:20%; left:44%;\" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0\" WIDTH=\"320\" HEIGHT=\"240\" id=\"rice\" ALIGN=\"\">
<PARAM NAME=movie VALUE=\"rice.swf\"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#333399> <EMBED src=\"rice.swf\" quality=high bgcolor=#333399 WIDTH=\"320\" HEIGHT=\"240\" NAME=\"rice\" ALIGN=\"\" TYPE=\"application/x-shockwave-flash\" PLUGINSPAGE=\"http://www.macromedia.com/go/getflashplayer\"></EMBED> </OBJECT>");

另外根据MDN,不推荐使用代码字符串 setTimeout。改为使用setTimeout(Func1, 10000);

于 2012-08-15T19:32:57.310 回答
1

onload 属性是一种在运行时执行 JavaScript 的非常过时的方法,尤其是在您使用 jQuery 时。

$().ready({ function(){
    // set you timeout here
});

此外,您的 JavaScript 充满了错误。您需要在尝试嵌入的 HTML 中转义引号。你现在的文本只是在字符串之间浮动,所以这肯定会引发一些语法错误。

$('#stage').html("<OBJECT style=\"z-index:2; position:absolute; top:20%; left:44%;\" // and so on.

另外,我认为 setTimeout 的语法在您的代码中也是错误的。 https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout

于 2012-08-15T19:34:48.260 回答
0

确保您的脚本标签具有“类型”并在 HTML 代码中使用单引号:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js" ></script>
<link href="http://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet" type="text/css" >
<script type="text/javascript">
    // Do 'onload' here:
    $(document).ready(function() {
        Func1Delay();
    });

    function Func1() {
        $('#stage').html('<OBJECT style="z-index:2; position:absolute; top:20%; left:44%;" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="320" HEIGHT="240" id="rice" ALIGN=""><PARAM NAME=movie VALUE="rice.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=bgcolor VALUE=#333399> <EMBED src="rice.swf" quality=high bgcolor=#333399 WIDTH="320" HEIGHT="240" NAME="rice" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED> </OBJECT>');
    }

    function Func1Delay() {
        setTimeout(Func1, 10000);
    }
</script>
于 2012-08-15T19:38:56.113 回答
0

改变:

setTimeout("Func1()", 10000);

至:

setTimeout(Func1, 10000);
于 2012-08-15T19:31:34.650 回答