Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 打印时触发调整大小事件_Javascript_Jquery_Html_Printing_Protovis - Fatal编程技术网

Javascript 打印时触发调整大小事件

Javascript 打印时触发调整大小事件,javascript,jquery,html,printing,protovis,Javascript,Jquery,Html,Printing,Protovis,我有一个div,在其中我使用创建了一个图表。div具有宽度:100%和高度:100%,创建图表的代码使用$(“#图表”).width()和$(“#图表”).height()获取渲染时div的大小,并用图表填充页面。我捕获窗口上的调整大小事件,并调整div和图表,使其在窗口调整大小时调整大小 现在我需要打印。我本希望当浏览器为打印机呈现页面时,它会发出一个调整大小的命令,但它不会,至少Safari和Firefox不会。Chrome做了一件奇怪的事情,它只调整高度而不调整宽度。有没有办法在打印前触发

我有一个div,在其中我使用创建了一个图表。div具有
宽度:100%
高度:100%
,创建图表的代码使用
$(“#图表”).width()
$(“#图表”).height()
获取渲染时div的大小,并用图表填充页面。我捕获窗口上的调整大小事件,并调整div和图表,使其在窗口调整大小时调整大小

现在我需要打印。我本希望当浏览器为打印机呈现页面时,它会发出一个调整大小的命令,但它不会,至少Safari和Firefox不会。Chrome做了一件奇怪的事情,它只调整高度而不调整宽度。有没有办法在打印前触发这种行为

编辑。考虑下面的HTML

<html>
  <head>
    <title>Resize</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript">
      $(document).ready(function() {
        $('#chart').resize(function() {
          $(this).html('chart size is ' + $('#chart').width() + ' x ' + $('#chart').height());
        })        
      });
      $(window).resize(function() {
        $('.resizable').resize();
      });
    </script>
    <style type="text/css">
      #chart { width: 100%; height: 100%; background: gray; border: 1px solid black;}
    </style>
  </head>
  <body>

    <div id="chart" class="resizable">
    </div>

  </body>
</html>        

调整大小
$(文档).ready(函数(){
$('#图表')。调整大小(函数(){
$(this.html('图表大小为'+$('#图表').width()+'x'+$('#图表').height());
})        
});
$(窗口)。调整大小(函数(){
$('.resizeable').resize();
});
#图表{宽度:100%;高度:100%;背景:灰色;边框:1px纯黑色;}
当我调整窗口大小时,div的内容会发生变化。打印时,渲染过程不会触发调整大小事件。

也许

<style type="text/css">
      #chart { width: 100%; height: 100%; background: gray; border: 1px solid black;}
</style>

<style type="text/css" media="print">
      #chart { width: 100%; height: 98%; background: gray; border: 1px solid black;}
</style>

#图表{宽度:100%;高度:100%;背景:灰色;边框:1px纯黑色;}
#图表{宽度:100%;高度:98%;背景:灰色;边框:1px纯黑色;}

与其使用事件来改变图表属性,不如使用
@media print
css规则


使用此方法,无论您进行了哪些其他更改,这些样式属性都将应用于打印。

浏览器对打印的支持(无论是打印内容还是打印过程)最多也很弱。我很想知道是否有人提出了一个好的技巧,但我怀疑你想要的通常是可能的。我一直无法在网上找到任何关于这个问题的信息。我可能需要将窗口调整到合理的大小,然后打印页面。你试过这个吗?你试过这个吗?我花了很长时间检查,但一般都不起作用。它只在chrome中工作,并且高度或宽度没有变化。因为这不能回答问题(如何触发
调整大小
事件)@adamdport ah你的意思是回答一个X/Y问题,并建议回答潜在问题,值得投下一票?好吧,至少你费心评论投票…@adamdport PS:2010-真的需要访问这些老帖子并投票否决它们吗?
@media print{
  #chart { width: 100%; height: 98%; background: gray; border: 1px solid black;}
}