我需要能够将当前网页复制到新的弹出窗口以进行打印预览。页面上有一个带子项的网格,因此如果它们展开其中一行以查看子行,我需要在新窗口中显示它。
这可能吗?
我目前有弹出窗口打开同一页面,但没有任何行被展开。
答案 0 :(得分:9)
也许这就是诀窍(在IE和Firefox中,而不是在Opera中。不知道WebKit):
var yourDOCTYPE = "<!DOCTYPE html..."; // your doctype declaration
var printPreview = window.open('about:blank', 'print_preview');
var printDocument = printPreview.document;
printDocument.open();
printDocument.write(yourDOCTYPE+
"<html>"+
document.documentElement.innerHTML+
"</html>");
printDocument.close();
(请注意window.open()
和document.open()
之间的差异!)
但是,您将丢失所有自定义DOM内容,例如事件处理程序等。尽管如此,如果您只想复制'粘贴HTML。
,它可能会有效答案 1 :(得分:0)
将打开/关闭行的状态编码为查询字符串格式(如“open = row1 + row5 + row10”),并将此字符串传递到新打开的窗口(如“host.com/blah.html”) ?开= ROW1 + ROW5 + row10" )。在目标页面上,在onload函数中检查位置对象并再次展开这些行。
答案 2 :(得分:0)
您还可以使用JavaScript访问弹出窗口并调用“hideRow(x)”等函数。我回家后会添加一个更好的例子(iPod touch输入代码并不好玩)
答案 3 :(得分:0)
您是否只是使用display:none;?隐藏/显示行你是如何加载弹出页面的?如果您再次重新加载页面,则可以使用AJAX将数据集传递到目标页面。
为每一行分配唯一的ID,对于展开的每一行,将行的ID添加到数组中。调用打印预览函数时,通过AJAX将该数组或对象作为数据成员传递,然后在加载页面后展开onsuccess回调函数中的适用行。