HTML 将SWF嵌入HTML页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML 将SWF嵌入HTML页面相关的知识,希望对你有一定的参考价值。

<object width="480" height="295">
<param name="movie" value="http://myflash.swf">
<param name="allowscriptaccess" value="always">
<embed src="http://myflash.swf" width="480" height="295" allowScriptAccess="always" type="application/x-shockwave-flash"/>
</object>

在 IE 的 html 页面中重新加载嵌入的 swf

【中文标题】在 IE 的 html 页面中重新加载嵌入的 swf【英文标题】:reload embedded swf in html page in IE 【发布时间】:2017-12-04 11:22:56 【问题描述】:

我在 html 页面中嵌入了一个 swf 文件。我想在不刷新页面的情况下重新加载 swf 文件。

这里也有同样的问题:reload/ reset embedded swf on click

我尝试了接受的答案,它在 chrome 中有效:

var obj = $("object#flash_99674493");
obj.html(obj.html());

但它似乎在 IE 中不起作用。如何让它在 IE 中运行?

【问题讨论】:

你使用github.com/swfobject/swfobject 吗?它包含添加和删除 swf 的特殊方法。 为什么不处理 swf 内部的重置? @DenisKokorin 是的,我愿意。但是我找不到重新加载它的方法。你可以再详细一点吗?谢谢。 【参考方案1】:

如果您的.swf 嵌入了<object>,请使用data 属性:

document.getElementById('flash_99674493').data += '';

对于嵌入<embed> 的使用src

document.getElementById('flash_99674493').src += '';

将空字符串添加到datasrc 会导致它们重新加载。

在 IE 中,我们必须将对象替换为相同的对象:

var o = document.getElementById('flash_99674493');
var n = o.cloneNode(!0);
o.parentNode.insertBefore(n, o);
o.parentNode.removeChild(o);

【讨论】:

我已经尝试过这种方法,虽然它在 Chrome/Safari 中运行良好,但在 IE 中似乎不起作用。你能改进一下吗? 它确实有效,但之前已经发布了另一个答案,所以我接受了这个答案。您的代码干净高效,干得好!非常感谢。 @Sefier,接受的答案重写了对象的子节点。如果您使用 embed 或您的 object 没有 param 子节点,则此方法将不起作用。由您决定哪种解决方案考虑最佳答案以及使用哪种 J。【参考方案2】:

您是否尝试过使用包装器使用常规 JavaScript?我在 IE 9 等旧浏览器上对此进行了测试。

<!-- wrapper around your flash object -->
<div id="flash-content">
        <object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"   id="SoundSpectrum2" align="middle">
            <param name="movie" value="SoundSpectrum2.swf" />
            <param name="quality" value="high" />
            ...

然后是 JavaScript:

function reloadFlash() 
   var content = document.getElementById('flash-content');
   var currentArray = [];

   while (content.firstChild) 
      currentArray.push(content.firstChild.cloneNode(true));
      content.removeChild(content.firstChild);
   

   currentArray.forEach(function(item) 
      content.appendChild(item)
   );

【讨论】:

以上是关于HTML 将SWF嵌入HTML页面的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是通过嵌入到 HTML 页面来加载 SWF(直接访问)?

如何将 .swf 插入 html 页面?

嵌入式 SWF 文件大小错误

如何使用播放器在 html 中嵌入 flv 或 swf?

HTML页面可以设置swf文件循环播放吗

如何使用 swfobject 通知 HTML 容器 SWF 已完成