第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

用微軟的瀏覽器會報錯

用微軟的瀏覽器會報錯,當鼠標移到邊緣時報IndexSizeError,這是什么鬼?參考瀏覽器為IE11和edge

http://img1.sycdn.imooc.com//55e42c890001661203450416.jpg

正在回答

4 回答

這個是我改造的,在IE瀏覽器也可以放大最邊緣的地方,不需要判斷sx和dx,可以是任意大小的圖片

var?canvas?=?document.querySelector("#canvas");
var?cxt?=?canvas.getContext("2d");

var?offCanvas?=?document.createElement("canvas");
var?offCxt?=?offCanvas.getContext("2d");

var?img?=?new?Image();
var?isMouseDown?=?false;

var?scale?=?2;

window.addEventListener("load",function(){
	img.src?=?"images/a.jpg";
	img.addEventListener("load",function?()?{
????????canvas.width?=?img.naturalWidth;
????????canvas.height?=?img.naturalHeight;
????????cxt.drawImage(img,0,0,canvas.width,canvas.height);
????},false);
},false);

function?windowToCanvas(x,?y){
	var?bbox?=?canvas.getBoundingClientRect();
	return?{
		"x":?x?-?bbox.left,
		"y":?y?-?bbox.top
	};
}

canvas.addEventListener("mousedown",function(event){
	event.preventDefault();
	var?point?=?windowToCanvas(event.clientX,?event.clientY);
	isMouseDown?=?true;
	
	drawCanvasWithMagnifier(isMouseDown,point);
	
},false);

canvas.addEventListener("mousemove",function(event){
	event.preventDefault();
	if(isMouseDown){
		var?point?=?windowToCanvas(event.clientX,?event.clientY);
		drawCanvasWithMagnifier(isMouseDown,point);
	}
},false);

canvas.addEventListener("mouseup",function(event){
	event.preventDefault();
	isMouseDown?=?false;
	drawCanvasWithMagnifier(isMouseDown);
},false);

canvas.addEventListener("mouseleave",function(event){
	event.preventDefault();
	isMouseDown?=?false;
	drawCanvasWithMagnifier(isMouseDown);
},false);

function?drawCanvasWithMagnifier(isShowMagnifier,?point){
	cxt.clearRect(0,0,canvas.width,canvas.height);
	cxt.drawImage(img,0,0,canvas.width,canvas.height);
	if(isShowMagnifier){
		drawMagnifier(point);
	}
}
function?drawMagnifier(point){
	var?imgWidth?=?img.naturalWidth*scale;
	var?imgHeight?=?img.naturalHeight*scale;
	var?mr?=?200;
	
	var?sx?=?-point.x*scale+mr;
	var?sy?=?-point.y*scale+mr;
	
	var?dx?=?point.x?-?mr;
	var?dy?=?point.y?-?mr;
	
	offCanvas.width?=?2*mr;
	offCanvas.height?=?2*mr;
	offCxt.drawImage(img,sx,sy,imgWidth,imgHeight);
	
	
	cxt.save();
	cxt.lineWidth?=?10;
	cxt.strokeStyle?=?"#069";
	cxt.beginPath();
	cxt.arc(point.x,point.y,mr,0,2*Math.PI,false);
	cxt.stroke();
	cxt.clip();
	cxt.drawImage(offCanvas,dx,dy,2*mr,2*mr);
	
	cxt.restore();
}


0 回復 有任何疑惑可以回復我~

在firefox與IE下都有這問題,感謝思路

0 回復 有任何疑惑可以回復我~

應該再加多兩句

dx = dx<0?0:dx;
dy = dy<0?0:dy;

1 回復 有任何疑惑可以回復我~

已經解決了,在微軟的瀏覽器下drawImage的sx和sy小于0的時候會報錯,要在drawImage
之前加多兩句

sx = sx<0?0:sx;
sy = sy<0?0:sy;

0 回復 有任何疑惑可以回復我~
#1

愛慕之夏

我也出現(xiàn)了同樣的錯誤 加了你的代碼 錯誤還在啊
2015-09-06 回復 有任何疑惑可以回復我~
#2

愛慕之夏

呃呃,對dx,dy都做了判斷就好了
2015-09-06 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

用微軟的瀏覽器會報錯

我要回答 關注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號