html – 如何让我的flash对象专注于加载?

前端之家收集整理的这篇文章主要介绍了html – 如何让我的flash对象专注于加载?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直试图为我的Flash游戏设置这个测试页面,但它拒绝专注于加载.我读了一堆论坛条目并没有让它做任何事情,我真的不相信这应该是这么难.

这就是我所拥有的:

  1. <head>
  2. <title>UP HERE WE ESCAPE THE RAT RACE</title>
  3. <Meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
  5. <script type="text/javascript">
  6. swfobject.embedSWF("UpHere.swf","myContent","700","300","9.0.0");
  7.  
  8. function setFocusOnFlash() {
  9. var fl = document.getElementById("myContent");
  10. if (fl) { fl.focus(); }
  11. }
  12. </script>
  13. </head>
  14. <body onload="setFocusOnFlash()">
  15. <div style="margin:0 auto; text-align:center; width:700px;">
  16. <div id="myContent" style="margin:0 auto; text-align:center; width:700px;">
  17. <p>Alternative content</p>
  18. </div>
  19. </div>
  20. </body>

你可以在这里看到它,
http://joon.be/exclusivepreview/

它出什么问题了?
我对swfObject没有很深的了解……

解决方法

我找到了一种适用于Firefox 16,Chrome 23和IE 8的方法(这些是我到目前为止测试过的地方).当然,这是一堆黑客,所以谁知道它是否会永远有用……但它肯定不会让事情变得更糟.
  1. function setFocusOnFlash() {
  2. var flash = document.getElementById("theIdOfTheObjectElement");
  3. flash.tabIndex = 1234; // This was needed on Chrome 23
  4. flash.focus();
  5. // Attention: FireFox needs wmode "opaque"!
  6. }

仅在Firefox上,< param name =“wmode”value =“opaque”>还需要在object元素下,否则focus()没有效果. (我使用了Stephen Belanger的jquery.flash,你可以在其中指定wmode;我认为它也可以用SWFObject.)

但更棘手的部分是你不能太早调用setFocusOnFlash.对于Chrome和IE,在插入对象的JavaScript之后直接添加setTimeout(setFocusOnFlash,1).直接发出setFocusOnFlash()没有.我假设诀窍很简单,只有在浏览器完全处理文档更改后才会调用定时回调,无论您指定的延迟如何.但是在Firefox上用这个小延迟打电话太早了;它在对象元素周围放置了一个虚线边框(它不应该),Flash没有得到击键.将延迟设置为250已在我的计算机上修复此问题,但谁知道您需要多大的延迟. (更糟糕的是,重复setFocusOnFlash调用也没有帮助……一旦那个虚线边框存在,它们没有进一步的效果.)所以,我所做的是将一个ExternalInterface.call(“flashLoaded”)回调添加到flash文档类构造函数.为了清楚起见,您可以在Flash / ActionScript中执行此操作,因此您需要访问SWF文件的源或作者.这样,当SWF启动时,它会调用嵌入HTML页面的flashLoaded JavaScript方法,因此您就知道它已准备就绪.功能如下:

  1. function flashLoaded() {
  2. // Oddly,directly calling setFocusOnFlash() didn't work on IE8
  3. setTimeout(setFocusOnFlash,1);
  4. }

猜你在找的HTML相关文章