<div id="1" class="aaa" style="position: relative; left: 50px; top: 50px; width: 300px; height: 200px; border: solid 1px; background: #dddddd; overflow: hidden;">
<div style="position: relative; left: 30px; top: 25px; width: 100px; height: 50px; background: blue;" onmouseenter="this.style.background='red';"></div>
<div style="position: relative; left: 160px; top: 70px; width: 100px; height: 50px; background: blue;" onmouseenter="this.style.background='orange';"></div>
</div>
<div id="2" class="bbb" style="position: relative; left: 250px; top: 100px; width: 50px; height: 20px; border: solid 1px; background: #cccccc; text-align: center; overflow: hidden;">click</div>
У меня есть один div (id = "1" class= "aaa"), который содержит несколько интерактивных div. Состояние этого интерактивного контента должно отображаться как изображение (gif?) С щелчком на другом div (id = "2" class= "bbb").
Это изображение желательно открыть в новой вкладке или окне. Или, может быть, просто щелкните правой кнопкой мыши> сохранить как на месте.
ps Я знаю о сценариях, таких как html2canvas и phantomjs, но я понятия не имею, как их реализовать в моем случае.
редактировать:
Теперь я пытаюсь реализовать это решение, которое с небольшой настройкой должно работать с process.js(http://cloud.github.com/downloads/processing-js/processing-js/processing-1.4.1.min. js).
Я думаю, мне нужен только правильный код jquery с обработкой. Js, чтобы получить нужные мне функциональные возможности. Я пробовал это, и он не работает:
$('.bbb').click(function (e) {
var canvas = document.getElementById("1"),
img = canvas.toDataURL("image/png");
$('.aaa').document.write('<img src="'+img+'"/>');
});
Вы можете использовать html2canvas для этого; включите библиотеку html2canvas на свою страницу и попробуйте что-то вроде этого:
//element would be your aaa div
html2canvas(element, {
onrendered: function(canvas) {
// canvas is the resulting canvas generated from the element
var url = canvas.toDataURL("image/png");
}
});
Затем вам нужно будет опубликовать значение "url" для скрипта PHP, как в одном из ответов на этот вопрос.
РЕДАКТИРОВАТЬ
Причина, по которой ваш новый код не работает, состоит в том, что элемент с идентификатором "1" не является элементом холста. Его div.
Методы холста, такие как toDataUrl(), могут быть вызваны только на элементы Canvas (поэтому я предложил использовать html2canvas для изменения вашего div в Canvas).
Я разветкил ваш jsfiddle, чтобы показать, как код может работать, если элемент с идентификатором "1" был холстом:
http://jsfiddle.net/_Pez/cksGt/1/
_Pez
Если бы я был в штанах, я бы начал с переключения первого div на запись SVG. Это не так уж и много, и есть много способов экспортировать svg-объект в png.
Это должно заставить вас начать
<svg id="1" class="aaa" width="400" height="250">
<g>
<rect id="svg_0" height="200" width="300" y="50" x="50" stroke-width="1" stroke="#000000" fill="#dddddd"/>
<rect id="svg_1" height="50" width="100" y="75" x="80" stroke-width="5" fill="blue"/>
<rect id="svg_2" height="50" width="100" y="120" x="210" stroke-width="5" fill="blue"/>
</g>
</svg>
<div id="2" class="bbb" style="position: relative; left: 250px; top: 100px; width: 50px; height: 20px; border: solid 1px; background: #cccccc; text-align: center; overflow: hidden;">click</div>