我想使用jquery将样式表(css)链接附加到iframe的头部。 我尝试使用以下代码但没有工作。
$('#tabsFrame').contents().find("head").append(cssLink);
答案 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("");
}