我在同一个元素上使用了两个函数,一个是用于保存图片的 AJAX,第二个是用于显示该图片的 prettyPhoto ajax 这里是示例
这是事件
> <a rel="prettyPhoto[ajax]" onClick="return false"
> onMouseDown="javascript:capture();"
> href="xhr_response.php?ajax=true&width=1100&height=482"><img
> src="img/assets/zoom2.png"></a>
这里我初始化了 prettyPhoto
$(document).ready(function(){
$("a[rel^='prettyPhoto']").prettyPhoto({ social_tools:false, });
});
这是我保存图像的捕获功能
function capture() {
$('#zoomTarget').html2canvas({
onrendered: function (canvas) {
var url = "ajax.php";
var imgSrc = canvas.toDataURL();
$.post(url, {contentVar: imgSrc } ,function(data) {});
}
});
}
一切都很好,但问题是我需要一些时间来保存图像,而 prettyPhoto 加载图像的速度如此之快,这意味着,当用户单击元素时,第一次没有加载正确的图像,需要时间来相同的图像,在第二次或第三次正确的图像显示正常,如何prevet prettyPhoto 等待图像被保存?
这是ajax.php
$contentVar = $_POST['contentVar'];
$filteredData=substr($contentVar, strpos($contentVar, ",")+1);
//Decode the string
$unencodedData=base64_decode($filteredData);
//Save the image
file_put_contents('img.png', $unencodedData);