来源:自学PHP网 时间:2014-12-15 15:58 作者: 阅读:次
[导读] 在HTML代码中嵌入Flash文件一直都是广大web爱好者所所喜欢挑战的事,也算不上什么挑战(对于新手朋友来说吧)好了,闲话不多说,切入正题...
在HTML代码中嵌入Flash文件一直都是广大web爱好者所所喜欢挑战的事,也算不上什么挑战(对于新手朋友来说吧)好了,闲话不多说,切入正题
中国人的习俗,没过完正月十五就还是在过年,在这里给园子你的朋友们拜个晚年了。 复制代码 代码如下:<html> <title>DEMO</title> <head> <script type="text/javascript" src="swfobject_source.js"></script> <script type="text/javascript"> var so = new SWFObject("http://www.pec365.com/Flash/20071113.swf", "mymovie", "304", "367", "7", "#FFFFFF"); so.write("flashcontent"); </script> </head> <body> <form id="Form1"> <div id="flashcontent"> <a href="http://www.adobe.com/go/getflashplayer"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" border="0" /> </a> </div> </form> </body> </html> 如果您想简要了解一下SWFObject()中的各个参数的含义,请参考说明文档,再此不在复述。 我强烈建议您,把“V1.5使用示例”中的代码拷贝到记事本中,并点击SWFObject V1.5下载所需的V1.5框架的源文件, 解压缩后找到swfobject_source.js(未压缩版,压缩版文件名是swfobject.js)文件,将记事本文件更名为demo.html后与swfobject_source.js文件放置于相同文件夹下即可,然后请您分别在IE6/IE7、fox、opera、safari、 navigator、chrome 等任意一款浏览器下运行看看结果如何。 如果您按照我的建议操作了,应当发现显示在页面上的是这张图 ,而非一个Flash文件,这是为什么呢?如果您的PC上恰好安装了IE系列的话,请按照以下步骤操作:点击IE浏览器图标,找到工具栏上的“工具”菜单,选中的“Internet选项”, 在打开的窗口中点击“高级”,找到“禁用脚本调试(Internet Explorer)”选项,将其前面方框中的勾选去掉,点击“确定”。请在完成上述操作之后,再次浏览demo.html页面,是否会发现弹出一个错误提示框,其提示错误信息如下:“出现了运行时错误,是否需要进行调试。行:117 错误:'null'为空或不是对象。” 如果您恰好正在使用VS 2003/2005/2008系列的IDE做开发,那么我想无需教您如何调试JavaScript代码了,您可以var so = ……的上方打一个debugger,然后调试跟踪进去,不停按F11后直到通过so.write()方法追踪到swfobject_source.js文件的内部,您会发现传递给so.write(elementId)的实参"flashcontent"在document.getElementById("flashcontent")时值一直为null,这又是为什么?发现问题所在了吗? 呵呵,如果您还是一名对JavaScript了解不多的新手,那么会和当时的我一样顿时陷入迷惘之中,在经过多次的调试和修改代码后, 我坚信自己编写的JS代码本身是不存在错误的,难道是外部加载的swfobject_source.js文件有问题,如果有问题,那问题究竟出在哪里了?当时,我是这样寻求解决错误的方法,我将上述代码修改为以下示例: 复制代码 代码如下:<html> <title>DEMO</title> <head> <script type="text/javascript"> // 执行一个匿名函数,和执行一个普通的函数没有差别 (function() { var flash = document.getElementById("flashcontent"); var msg = null; window.onload = function() { if ( flash ) { msg = 'The element does exist.'; flash.innerHTML = msg; } else { msg = 'The element does not exist'; window.alert( msg ); } }; })(); </script> </head> <body> <form id="Form1"> <div id="flashcontent"> <a href="http://www.adobe.com/go/getflashplayer"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" _fcksavedurl=""http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif"" alt="Get Adobe Flash player" border="0" /> </a> </div> </form> </body> </html> 如果您执行了上述代码就会发现,依旧发现显示在页面上的还是这张图 ,并且弹出一个含有“The element does not exist"的警告框,看来问题并非出自外部加载的swfobject_source.js文件上。 如果您看到这里,定会体验我当时的懊恼,在稍微休息后,清醒下脑子回头再看,才发现问题的本质出在“HTML DOM的加载”上。在一个页面中,处于页面头部(即<head></head>之间)中的JS脚本以及从外部文件加载的JS文件会在HTML DOM 真正构造之前就执行了。因此这两个地方执行的脚本并不能访问还不存在的DOM。您应该知道真正的原因了,那就是示例1.1 中的JS代码执行过程中,访问了还未来得及构造的<div id="flashcontent">……</div>。 好了,看到这里,还有最后一个步骤需要您亲自动手操作一下,就是将上述代码简单的修改一下,采取一种并不优雅的方法解决 关于“HTML DOM的加载”的问题,到底是哪种方法呢,我想大家或许应该猜想到了,对,正是如下这种方式: 复制代码 代码如下:<html> <title>DEMO</title> <head> <script type="text/javascript" src="swfobject_source.js"></script> _fcksavedurl=""swfobject_source.js"></script>" </head> <body> <form id="Form1"> <div id="flashcontent"> <a href="http://www.adobe.com/go/getflashplayer"> <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" border="0" /> </a> </div> </form> <script type="text/javascript"> var so = new SWFObject("http://www.pec365.com/Flash/20071113.swf", "mymovie", "304", "367", "7", "#FFFFFF"); so.write("flashcontent"); </script> </body> </html> 前面洋洋洒洒上千字,只是在描述我走了多少弯路,在解决问题的过程中遇见那些麻烦,从麻烦中解脱出来运用了那些学习的 知识,又从中学习了那些知识,虽然有点累赘之嫌,但是您是否如我一样也有不一样的收获呢? |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com