【问题标题】:jquery inserting all stylesheets into iframejquery将所有样式表插入iframe
【发布时间】:2009-09-29 02:14:47
【问题描述】:

如何将父窗口的所有样式表插入 iframe 的头部(相同域)?

我基于类似问题尝试的代码:

function () {
    var d = frames[0].document;
    var stylesheets = $("link").outerhtml;
    d.open();
    d.write(
    '<html><head>'+
    stylesheets + 
    '<style type="text/css">'+
    '<\/style><\/head><body><\/body><\/html>'
    );
    d.close();
}

显然,这在 IE 之外不起作用。提前致谢。

编辑:根据安东尼的回答尝试:

    $("link[type='text/css']").each(function() {
        var stylesheet = $(this).clone();                                    
        $("iframe").contents().find("head").append(stylesheet);
    });

【问题讨论】:

  • 第一个函数写的,让人怀疑,iframe是包含HTML还是空白?

标签: javascript jquery iframe wysiwyg


【解决方案1】:

所选答案的一个问题是它使用了.html(),它只返回该元素的内部 html 内容,而不是元素本身。这是一个可行的解决方案:

$("link[type='text/css']").clone().appendTo($("iframe").contents().find("head"));

【讨论】:

  • HTML5中样式表链接标签的type属性是可选的,最好使用$("link[rel='stylesheet']")
  • 或者选择完整的三重奏:$("link[rel='stylesheet'], link[type='text/css'], link[href$='.css']")
【解决方案2】:
$("link[type='text/css']").each(function() {
     var stylesheet = $(this).html();
     $("iframe").contents().find("head").append(stylesheet);
     });

【讨论】:

  • 你的意思是 this.clone 对吧?因为否则会移动样式表。尽管如此,我还是没有让它发挥作用。
  • 不,我的意思是追加,但我也打算指定追加 html,对不起。编辑有用吗?如果没有,请确保 iframe 选择器有效。像alert($("iframe").contents().find("title").text() 这样简单的东西。 iframe 代码直接来自 jquery。
  • 对不起,我搞砸了一些小事,但我在问题中的版本会起作用。谢谢。
猜你喜欢
  • 2012-09-08
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-24
  • 2013-01-05
相关资源
最近更新 更多