2011-08-24 38 views
0

我正在处理的网站上有一个打印图标,弹出一个打印友好的页面,打印效果很好。但是,如果用户点击CTRL + P(不按“打印图标”),则不使用适合打印的版本。所以问题是如何让用户在按CTRL + p时打印适合打印机的版本?如何使用CTRL + p使用打印机友好的功能?

可能会造成障碍的是,使用XSLT生成打印机友好页面。有任何想法吗?

我已经浏览了一些涉及使用CSS的文章,但似乎我需要重新定义/创建新的打印机友好的页面/ CSS布局,而且我没有看到如何使用XSLT实现此功能。我还包含一个CSS标签,以防你的一些聪明人有办法用CS解决这个问题。如果这是不可能的,我很抱歉张贴错误的标签..

+0

我想补充一点,弹出窗口需要一个ID号码的打印机友好页面来知道打印哪篇文章。 – pecka85

+1

您是否想过在您的css中使用@media print {}为您的打印页面提供不同的布局?这样你就可以生成一个单独的页面,并使用css进行不同的布局。 –

+0

我想到了这一点,我已经看到了它的一些例子,我没有看到我在这种情况下如何使用这种方法。所有数据都是通过XML提供的,然后由XSLT进行处理以便以便于打印的方式显示页面。我没有看到我怎么能混合这两个..? – pecka85

回答

2

使用带有@media打印选项的样式表来隐藏none打印元素。

我有一个快速去,我认为我已经剥去了大多数元素,你应该能够进一步调整,以更好地满足您的需求。

@media print { 

    #col1,#col2 { display:none; } 

    #crumbs,#header_smallmenu,#header_search { display:none;} 

    .solidblockmenu { display:none; } 

    .addthis_toolbox addthis_default_style { display:none;} 

    #hbfooter, .hbfooter { display:none; } 

    body {background-image: none;} 

} 
-1

这不是一个JavaScript的工作吗?

如果您捕捉onKeyDown事件,你能赶上当按下CTRL + P,以及火了自己的JavaScript打开您的打印机友好的页面

function overrideKeyDown(winEvent) 
{ 
    var keyCode; 

    if(!winEvent) 
    { 
       // IE code 
     winEvent = window.event; 
     keyCode = winEvent.keyCode; 
    } 
    else 
    { 
     keyCode = winEvent.which; 
    } 

    if (keyCode == 80 && winEvent.ctrlKey) 
    { 
     alert('Printer Friendly Page'); 
     return false; 
    } 
} 

document.onkeydown = overrideKeyDown; 

这在IE和Chrome,但烦人Firefox仍弹出“打印机”对话框以及运行Javascript。不过,我想我会发布代码,以防万一它帮助你。

+0

感谢提示,提姆C!不幸的是,我还需要Firefox的支持。 – pecka85

+0

“这不是Javascript的工作吗?”不,这是CSS的工作!请参阅@Bob Vale的答案。 – feeela

相关问题