JavaScript:如何动态地将 Flash 文件 (SWF) 添加到 DOM,以便 IE 加载它

2024-02-23

我的页面需要根据 XML 文件中的数据描述动态加载内容。 SWF 是可以动态加载的项目之一。我的代码可以通过 http 和文件协议在 Firefox 中正确加载和启动电影,在 Chrome 中通过 http 协议正确加载和启动电影。我需要它在 Internet Explorer 中以 http 和文件协议成功加载,但所有 Flash Video Player 报告都是“电影未加载...”。有人可以查看以下信息并给我修复吗?

XML 中 Flash 对象的描述如下所示:

<multimedia
    type='flash'
    swf='swf/filename_here.swf'
    width='600'
    height='400'
    version='7.0.19.0'
/>

我有 JavaScript 来解析它并创建一个类似于以下 JSON 的对象:

{
    'tag': 'multimedia',
    'attributes': [
        'type': 'flash',
        'swf': 'swf/filename_here.swf',
        'width': '600',
        'height': '400',
        'version': '7.0.19.0'
    ]
}

最终,这个对象被传递给一个创建 DOM 元素的函数(是的,我知道这个函数的顺序很奇怪;我尝试了不同的方法来让它工作):

var path = var path = document.location.href;
path = path.substr(0, path.lastIndexOf('/') + 1);

var version = null;

function isIE() {
    return navigator.userAgent.lastIndexOf('Trident') > 0;
}

function buildFlash(element) {
    version = element.attributes.version;

    var name = document.createElement('param');
    name.setAttribute('name', 'movie');
    name.setAttribute('value', path + element.attributes.swf);

    (if (!isIE()) {
        var inner = document.createElement('object');
        inner.setAttribute('type', 'application/x-shockwave-flash');
        inner.setAttribute('data', path + element.attributes.swf);
        inner.setAttribute('width', element.attributes.width);
        inner.setAttribute('height', element.attributes.height);
    }

    var flash = document.createElement('object');
    flash.setAttribute('id', 'flashMovie');
    flash.setAttribute('classid', 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000');
    flash.setAttribute('width', element.attributes.width);
    flash.setAttribute('height', element.attributes.height);
    flash.appendChild(name);
    if (!isIE()) {
        flash.appendChild('inner');
    }

    var div = document.createElement('div');
    div.setAttribute('id', 'multimedia');
    div.appendChild('flash');
    return div;
 }

生成的 div 最终会添加到页面中的正确位置。

有任何想法吗?


IE 不支持动态调整对象元素的大部分属性/参数。

您可以使用此函数创建具有给定属性和参数的跨浏览器对象元素。

var createSwfObject = function(src, attributes, parameters) {
  var i, html, div, obj, attr = attributes || {}, param = parameters || {};
  attr.type = 'application/x-shockwave-flash';
  if (window.ActiveXObject) {
    attr.classid = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';
    param.movie = src;
  }
  else {
    attr.data = src;
  }
  html = '<object';
  for (i in attr) {
    html += ' ' + i + '="' + attr[i] + '"';
  }
  html += '>';
  for (i in param) {
    html += '<param name="' + i + '" value="' + param[i] + '" />';
  }
  html += '</object>';
  div = document.createElement('div');
  div.innerHTML = html;
  obj = div.firstChild;
  div.removeChild(obj);
  return obj;
};

Example

var swfEl = createSwfObject('http://example.com/example.swf', {id: 'myid', 'class': 'myclass', width: 100, height: 100}, {wmode: 'transparent'});
document.body.appendChild(swfEl);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript:如何动态地将 Flash 文件 (SWF) 添加到 DOM,以便 IE 加载它 的相关文章

随机推荐

  • 如何在jquery中获取tinymce内容?

    我正在尝试获取tinymce数据 但收到tinyMCE未定义错误 这是我的代码 function savePost console log jQuery wp tinymce editor tinyMCE getContent 请检查 Ti
  • 使用 knockout js 和 jquery ui 滑块

    我试图弄清楚knockout js是否可以很好地解决以下问题 我有多个滑块想要链接到文本框 当文本框更改时 相应的滑块必须更新为新值 反之亦然 更改滑块值或文本框时 需要调用一个函数 该函数使用所有文本框的输入来计算结果 我有我的快速但肮脏
  • 从 Google App Engine (Java) 将文件上传到 Google 云存储

    如何将文件从谷歌应用程序引擎中的servlet上传到谷歌云存储 当我这样做时 Google 云存储不知道文件的类型 即我从 HTML 表单发送的文件 编写 HTML JavaScript 和 servlet 将文件上传到云存储的正确方法是什
  • v-dialog Vuetify 的自定义位置

    我需要在页面右下角打开一个具有一定宽度和高度的 v 对话框 但是 我不明白该怎么做 V dialog总是在页面居中 我搜索了官方文档 尝试使用CSS 但无法 有任何想法吗 Note 其他提供的解决方案并不令人满意 因为它们搞乱了转换 或者我
  • 使用exist()的Cloud firestore规则是否算作读取?

    我正在存储被阻止用户的文档集合 我通过检查电子邮件是否存在于被阻止的集合中来检查请求是否来自被阻止的用户 allow read if exists databases database documents blocked request a
  • 如何将当前cygwin目录转换为windows格式

    显示我正在使用的当前目录 pwd在 Cygwin 中运行良好 This document https cygwin com cygwin ug net using effectively html正在解释如何将 cygwin 目录转换为 w
  • 存储库是单例还是静态还是都不是?

    我有一个 ASP NET 网站 它使用域驱动设计并使用存储库进行数据库操作 我想知道单例存储库和静态存储库以及每次访问都会新增的简单存储库类的优缺点是什么 此外 如果有人可以比较并指导我使用其中的哪一个 我将不胜感激 静态和单例对于存储库模
  • Jquery 验证错误放置(单选按钮)

    我正在尝试使用 Jquery 验证插件来验证我的表单 我的大多数输入元素的右侧都会出现错误消息 但单选按钮只会给我带来麻烦 如果我没有给出 div group 类的宽度 错误消息会出现在整个页面的外部 因为我假设 div 宽度是页面的 10
  • 安装 Shield LE - 错误 6058 ...在 64 位中合并 Visual C++ 10.0 CRT

    我正在尝试编译一个安装屏蔽项目 这是一个 64 位程序 我不断收到此错误 尽管它确实编译正常并安装正常 Error 16 6058 Error merging Visual C 10 0 CRT IA64 with module ID C
  • 有没有办法在 swift 中从 utf16 数组创建字符串?

    我们知道 String utf16 提供代码单元或 String unicodeScalars 提供标量 如果我们通过删除一些元素等来操作 codeunits 和 unicodeScales 有没有办法构造回结果字符串 Swift 2 1
  • 如何更改数据类型而不导致 Haskell 重新编译?

    看完一段视频后布雷特 维克多的演讲 http vimeo com 36579366 我受到启发 编写了一个快速破解程序 该程序与他在演讲中演示的开发环境有些相似 基本上 其想法是 让应用程序在一个窗口中运行 每当在源文件中保存更改时 程序就
  • 猫鼬和 q 承诺

    我正在使用 mongoose q Promise 框架示例here https gist github com 2660323 但在尝试使用 findOne 时 nfbind 似乎存在一些问题 主要是因为来自Q https github c
  • 如何正确使用文件映射并将数据传递给子进程?

    我的应用程序正在执行另一个进程 更新程序 我想将大数据 可能是一条记录 从我的应用程序传递到update程序 使用命令行传递数据参数不是一个选项 因为数据太大 而且数据大小可能会有所不同 How to 正确地 create CreateFi
  • Python 网页抓取:BeautifulSoup 未显示所有 html 源内容

    我对网络抓取和Python还很陌生 我正在尝试制作一个脚本来获取最后的交易价格但当我用 python 请求时 一些内容似乎丢失了 我之前制作过从其他网站成功获取数据的脚本 但我似乎无法让我的代码在该网站上运行 到目前为止 这是我的代码 fr
  • 如何在 Shared Worker 中运行 EventSource?

    我实施了服务器发送的事件 https developer mozilla org en US docs Server sent events Using server sent events接收来自服务器的消息 我描述了我是如何实现它的另一
  • 如何避免这个 NullPointerException

    我正在开发一个小型街机视频游戏 我希望使用双缓冲来改进动画 我有一个类应该绘制空白图像 另一个类应该绘制一条简单的线条 但是 我不断在应该绘制线条的线条上收到 NullPointerException class Render extend
  • 为什么 `FromIterator` 的实现使用 `IntoIterator` 而不是 `Iterator`?

    的示例实现FromIterator特质在Rust 文档 https doc rust lang org std iter trait FromIterator html is impl FromIterator
  • 我收到了我无法理解的警告

    当我编译我的应用程序时 我收到此警告 但我无法理解 Users imac Desktop MyApp RechercherView xib 44 0 This bar button item s style is set to plain
  • 为什么我无法索引 ExpandoObject?

    今天研究 C 动态时 有件事让我感到惊讶 我从来没有经常使用它们 但最近我一直在尝试 Nancy Web 框架 我发现我不能这样做 dynamic expando new ExpandoObject expando name John Co
  • JavaScript:如何动态地将 Flash 文件 (SWF) 添加到 DOM,以便 IE 加载它

    我的页面需要根据 XML 文件中的数据描述动态加载内容 SWF 是可以动态加载的项目之一 我的代码可以通过 http 和文件协议在 Firefox 中正确加载和启动电影 在 Chrome 中通过 http 协议正确加载和启动电影 我需要它在