У меня есть div, в котором я создаю диаграмму, используя protovis. В div есть width: 100%
и height: 100%
, а код для создания диаграммы использует $('#chart').width()
и $('#chart').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>
Когда я изменяю размер окна, содержимое div изменяется. Когда я печатаю его, процесс рендеринга не запускает событие изменения размера.