【发布时间】:2012-07-26 22:27:24
【问题描述】:
这很好用:
<script type="text/javascript">
$(document).ready(function() {
$.fancybox({'href' : 'http://www.cnn.com','frameWidth':500,'frameHeight':500,'hideOnContentClick': false,'type':'iframe'});
});
</script>
也就是说,FancyBox 打开并显示 CNN 主页。但是,如果我将 href 属性更改为“#pg”
并以这种方式编码页面:
<body>
<div id="pg"></div>
<script type="text/javascript">
document.getElementById("pg").innerHTML = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title></title></head><body>test me now</body></html>";
</script>
</body>
FancyBox 打开,但不显示任何文本。 (文本“text me now”显示在#pg div 元素中。请注意,它分配给页面末尾的DIV 的innerHTML。)
基本上,我想知道是否有办法动态初始化DIV 的innerHTML 属性并将其显示为FancyBox 类型的iFrame? (iFrame 的内容会有一个打印 iFrame 文档的按钮。)
TIA
更新:2012 年 7 月 28 日
按照@arttronics 的建议,我整理了一个jsFiddle
总而言之,最终目标是能够单击 FancyBox 中包含的按钮,该按钮将打印 FancyBox 的整个内容不打开另一个窗口。 (我想使用 FancyBox 作为 Javascript 解析的内容的报表查看器。)
我假设我需要使用 FancyBox 的 iframe 播放器显示内容,但我可能错了。
jsFiddle 显示:
FancyBox 能够使用内联播放器显示验证为 HTML 页面的文本。文本可以通过href 或content 引用。
但是,当播放器是iframe 并且内容来自href 时,FancyBox 容器为空。如果内容来自content 属性,FancyBox 会显示 404 错误。
只需注释和取消注释 jsFiddle 代码即可了解我的意思。
任何关于如何实现我的目标的想法都将受到赞赏,并将获得支持!
TIA。
更新:2012 年 7 月 31 日
这个新的 jsFiddle 示例:Iframe report viewer works but not in FancyBox
如您所见,我尝试了几种方法在 FancyBox 中显示 iframe。虽然 FancyBox 会显示 iframe 的内容,但打印功能会中断。
我认为解决此问题的一种方法是在加载后将 myContent var 的内容写入 FancyBox,但我无法 (A) 找到要写入的正确 DOM 节点,并且 (B)当 iframe src="about:blank" 时,我无法让 FancyBox 使用其 iframe 播放器显示 iframe。
有什么建议吗?或者您是否看到了修复 jsFiddle 示例的方法?
【问题讨论】:
-
尝试使用 FancyBox HTML
inline player而不是iframe player。 -
@arttronics 我认为这会奏效。我明天必须做更多的测试。与此同时,为你投上一票。谢谢。
-
不幸的是,内联类型不允许我复制 iframe 类型的行为。使用 iframe,我可以在 FancyBox 中显示页面上的一个按钮,该按钮的 onclick() 处理程序编码如下
window.print()并且查看器可以很好地打印出 FancyBox 内容。即使我的内联内容看起来是一个完整的 HTML 文档,DOM 也不会将其视为文档,因此print()方法会打印主窗口的内容。 (我知道我可以通过打开一个新窗口来打印 FancyBox 的内容,但我想尽可能避免这种情况。) -
请注意,当此代码打开 FancyBox 并显示内容时,对
window.print();的调用不起作用:$.fancybox({'content':'<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>Print Me</title></head><body><h1>Print Me</h1><button onlick="window.print();">Print</button></body></html>', 'Width':500,'Height':500, 'hideOnContentClick': false, 'type':'inline' }); -
@arttronics 请参阅jsfiddle.net/taa1953/P823J。请注意,仅打印 FancyBox 的部分内容。如果你取消注释
type属性,div 的内容将不再出现在 FancyBox 中。
标签: javascript jquery iframe fancybox