jQuery 延期在 chrome 和 safari 上不起作用
jQuery deferred not working on chrome and safari?
我想在画布标签上drawImage
,然后再次保存。我使用jQuery的deferred.done()
。
这是我使用的代码:
function save_submit() {
LoadDraw().done(function(){
var canvas = document.getElementById('touchpaint');
var ctx = canvas.getContext('2d');
var image = canvas.toDataURL();
});
var LoadDraw = function () {
var r = $.Deferred();
var canvas = document.getElementById('touchpaint');
var ctx = canvas.getContext('2d');
var imageLoader = 'http://img262.imageshack.us/img262/3453/gokum.jpg';
var img = new Image();
$(img).load(function (){
ctx.globalCompositeOperation = "destination-over";
ctx.drawImage(img,0,0);
});
img.crossOrigin = '';
img.src = imageLoader;
r.resolve();
return r;
}
它在火狐浏览器上运行良好。但不适用于Chrome和Safari。我正在寻求帮助。谢谢。
好吧,您没有正确使用延迟。延迟对象的想法是在某种回调函数中解决它,而不是在创建它之后"直接"解决它。
在您的情况下,您可能应该解析 $(img).load 回调函数中的延迟 (r):
var LoadDraw = function () {
var r = $.Deferred();
var canvas = document.getElementById('touchpaint');
var ctx = canvas.getContext('2d');
var imageLoader = 'http://img262.imageshack.us/img262/3453/gokum.jpg';
var img = new Image();
$(img).load(function (){
ctx.globalCompositeOperation = "destination-over";
ctx.drawImage(img,0,0);
r.resolve();
});
img.crossOrigin = '';
img.src = imageLoader;
return r;
}
相关文章:
- window.open(url).print()在Safari中不起作用
- 复制到剪贴板在safari-angularjs中不起作用
- Javascript Cookies在Safari中不起作用
- 带有Safari的Javascript;不起作用——所有其他浏览器都起作用
- 导航到新url时,Javascript在Safari中不起作用
- JS代码使IE9和Safari冻结,在Opera中不起作用
- html视频javascript播放方法在移动Safari中不起作用
- 为什么这个排序功能在 Safari 中不起作用
- $.getJSON 在 Chrome 和 Safari 中不起作用
- window.dispatchEvent 在 Firefox、Safari 或 IE 中不起作用
- 滚动到顶部按钮在 chrome 或 safari 中不起作用
- jQuery .play() 在移动 Safari 上不起作用
- jQuery .focus() 在 Safari(桌面)的搜索字段中不起作用
- HTML5<视频>元素在Firefox、Opera和Safari中不起作用
- 为什么find('input:focus')在safari中不起作用
- OfflineAudioContext.startRendering()基于承诺的函数在safari中不起作用
- ng模式验证在safari中不起作用
- 图像预览在Safari中不起作用
- 脚本在safari中不起作用
- CreateContextualFragment在safari中不起作用