【问题标题】:Using jQuery to change all instances of <object> to <iframe> for IE support使用 jQuery 将 <object> 的所有实例更改为 <iframe> 以获得 IE 支持
【发布时间】:2010-05-20 21:15:14
【问题描述】:

我想知道在 IE 8 及更低版本上加载时,是否可以使用 jQuery 将网站上的所有 &lt;object&gt; 标签切换为 &lt;iframe&gt; 标签。从本质上讲,这将使页面XHTML 1.1 有效,并且不必一直重复编码,从而无需花费大量时间关注非标准浏览器。

data= 属性需要更改为src=,我想插入frameborder="0",并且&lt;object&gt; 标记的所有style 值也需要为&lt;iframe&gt; 标签。

我的目标是不是&lt;iframe&gt;s 与&lt;object&gt;s 上进行辩论,我只是认为这将是一个巨大的节省时间,并鼓励适当、严格的xhtml编码实践。

感谢您的任何意见!

【问题讨论】:

  • 如果在客户端修改之前不符合输出,你真的可以调用严格的 xhtml 吗?
  • @David 他想反其道而行之:他想输出严格的 HTML,然后在加载后进行 IE6 修复。

标签: jquery iframe object internet-explorer


【解决方案1】:

有关如何更改元素类型的基本概要,请参阅jQuery convert DOM element to different type(不知道它是否会在 XHTML 中正常工作,但它很可能),但我认为这根本不是一个好主意。我可以看到它会导致旧机器(运行 IE6 的机器)出现延迟,显然,当 JavaScript 被禁用时它不会工作。所有这些都是为了实现有效的代码? IMO 不是一个好主意。

在此之前,如果代码必须在任何情况下都有效,我会考虑在服务器端为 IE6 提供不同的代码。

【讨论】:

  • 对于我正在做的事情,缺乏 JavaScript 支持不是问题。另外,我发现现在拥有没有 JavaScript 的设备的可能性非常小。过去几年的所有新手机都支持 JavaScript,而且大多数人的手机使用时间不会超过 2 年。我会看看你发给我的链接,谢谢。
【解决方案2】:

我不知道您是否可以更改 DOM 元素类型,但您始终可以创建一个新的 IFRAME 元素并删除旧元素。

类似的东西(注意:未经测试!)

$("object").each(function() {
    var obj = $(this);
    $("<iframe/>").attr({
        src: obj.attr("data"),
        style: obj.attr("style"),
        frameborder: 0
    })
    .after(obj);

    obj.remove();
});

【讨论】:

  • 我无法测试您的代码。它不会将创建的 iframe 放在对象之后。所以对象被移除后就什么都没有了。
猜你喜欢
  • 2013-08-29
  • 2011-08-02
  • 1970-01-01
  • 2012-04-14
  • 2013-11-20
  • 2012-11-11
  • 1970-01-01
  • 2016-07-10
  • 2017-04-24
相关资源
最近更新 更多