附加链接到Iframe的头部
Appending Link To Head Of Iframe
我想添加元素到Iframe (fancybox)的头部
有一个奇怪的问题:当我使用Firefox对附加元素到Head的代码行进行断点时,它可以正常工作,但当我正常运行站点时,没有firebug,它不工作;
我使用的是fancybox 1.3.4和代码运行在onComplete事件
var cssLink = document.createElement("link")
cssLink.href = "/themes/furniture/css/test.css";
cssLink .rel = "stylesheet";
cssLink .type = "text/css";
var f123= document.getElementById('fancybox-frame');
var d123= f123.contentDocument || f123.contentWindow.document;
d123.head.appendChild(cssLink);
更新我也试一下这个代码
var $head = $("#fancybox-frame").contents().find("head");
$head.append($("<link/>",
{ rel: "stylesheet", href: "/themes/furniture/css/test.css", type: "text/css" } ));
但是它也不工作
Tnx
好吧,这似乎是一个竞速性的条件确实(正如指出的olsn在他的评论)之间加载iframe和查找它里面的元素,如果第二次发生失败;)
作为一种解决方法,您可以使用.load()
方法等待iframe
完全加载,然后再尝试将样式表append
到<head>
部分。
下面的代码应该能达到这个效果:
$(document).ready(function () {
$(".fancybox").fancybox({
"type": "iframe",
"onComplete": function () {
var $style = '<link rel="stylesheet" href="/themes/furniture/css/test.css" type="text/css" />';
$("#fancybox-frame").load(function () {
$(this).contents().find("head").append($style);
});
}
});
});
注意:这是为fancybox v1.3.4。幸运的是v2。x包含比v1.3.4更灵活的公共方法来规避此问题,如afterLoad
和beforeShow
还注意到setTimeout()
也可以工作,但它呈现奇怪。
相关文章:
- 防止Iframe窗体在新窗口中打开
- 将样式表插入iframe
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 使用jQuery从原始页面内容创建iframe
- Highslide(iframe的侦听器)
- iframe正在添加标签,需要删除它们
- 通过javascript/html访问twitter共享iframe
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 如何使用Angular动态添加iframe-src
- 由于iframe导致的问题
- 正在从页面中删除iframe
- 检测iframe是否跨域的愚蠢方法
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 如何操作iframe之外的元素
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- 为什么 jQuery 在使用样式标签填充 iframe 时会删除正文和头部标签,但不能没有样式标签
- 重复iframe:将头部和身体从一个iframe复制到另一个ifame
- 将meta标记附加到iframe中主文档的头部
- 附加链接到Iframe的头部
- 使用JS和iframe在头部添加样式标签