使用jquery在iframe的头部追加元素

时间:2011-02-14 08:40:02

标签: javascript jquery html css

我想使用jquery将样式表(css)链接附加到iframe的头部。 我尝试使用以下代码但没有工作。

$('#tabsFrame').contents().find("head").append(cssLink);

4 个答案:

答案 0 :(得分:6)

我习惯使用这行代码将数据附加到iframe

$('body', window.frames[target].document).append(data);

在你的情况下,这一行看起来像这样

$('head', window.frames['tabsFrame'].document).append(cssLink);

编辑:

<head></head>添加到iframe并将var cssLink更改为

cssLink = '<link href="cupertino_1.4/css/cupertino/jquery-ui-1.8.7.custom.css" type="text/css" rel="Stylesheet" class="ui-theme" />

答案 1 :(得分:2)

好吧,您可以查看:

$('#tabsFrame').contents().find("head")[0].appendChild(cssLink);

答案 2 :(得分:0)

我认为由于安全性,您无法操纵iframe的内容。 让你能够做这样的事情会使跨站脚本变得太容易。

iframe完全独立于您网页的DOM。

另外,java和javascript是两个完全不同的东西!

按照链接查看差异here

答案 3 :(得分:-1)

这可能与IE不允许你在DOM中添加元素有关,请查看聪明的解决方案here

修改

感谢@kris,建议在案例链接中添加更多信息:

以下是该链接的主要代码段,以防它再次出现。 (这只需要一些IE版本,大多数情况下,其他答案都可以正常工作)

var ifrm;

//attempts to retrieve the IFrame document    
function addElementToFrame(newStyle) {
    if (typeof ifrm == "undefined") {
        ifrm = document.getElementById('previewFrame');
        if (ifrm.contentWindow) {
            ifrm = ifrm.contentWindow;
        } else {
            if (ifrm.contentDocument.document) {
                ifrm = ifrm.contentDocument.document;
            } else {
                ifrm = ifrm.contentDocument;
            }
        }
    }

    //Now that we have the document, look for an existing style tag
    var tag = ifrm.document.getElementById("tempTag");

    //if you need to replace the existing tag, we first need to remove it
    if (typeof tag != "undefined" || tag != null) {
        $("#tempTag", ifrm.document).remove();
    }

    //add a new style tag
    $("HEAD", ifrm.document).append("");
}