关于 document.selection.createRange() 拒绝访问的问题

在网上找了个上传图片的代码,

IE8测试报错显示:拒绝访问

报错位置见如下代码: 

//选择图片
function change(file) {
	//预览
	var pic = $(file).parent().find(".preview");
	//添加按钮
	var addImg = $(file).parent().find(".addImg");
	//删除按钮
	var deleteImg = $(file).parent().find(".delete");

	var ext=file.value.substring(file.value.lastIndexOf(".")+1).toLowerCase();

	// gif在IE浏览器暂时无法显示
	if(ext!='png'&&ext!='jpg'&&ext!='jpeg'){
		if (ext != '') {
			popAlert("请上传png或jpg格式照片"); 
		} 
		return;
	}
	//判断IE版本
	var isIE = navigator.userAgent.match(/MSIE/)!= null,
		isIE6 = navigator.userAgent.match(/MSIE 6.0/)!= null;
		isIE10 = navigator.userAgent.match(/MSIE 10.0/)!= null;
	if(isIE && !isIE10) {
		file.select();
		
        //IE8报错:拒绝访问
		var reallocalpath = document.selection.createRange().text;

		// IE6浏览器设置img的src为本地路径可以直接显示图片
		if (isIE6) {
			pic.attr("src",reallocalpath);
		}else{
			// 非IE6版本的IE由于安全问题直接设置img的src无法显示本地图片,但是可以通过滤镜来实现             
			pic.css("filter","progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod='scale',src=\"" + reallocalpath + "\")");
			// 设置img的src为base64编码的透明图片 取消显示浏览器默认图片
			pic.attr('src','data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==');             
		}
		addImg.hide();
		deleteImg.show();
	}else {
		html5Reader(file,pic,addImg,deleteImg);
	}
}

修复方法如下:

在报错位置前一行添加:   file.blur();

在file控件下获取焦点情况下 document.selection.createRange() 将会拒绝访问,所以我们要失去下焦点

猜你喜欢

转载自blog.csdn.net/zhangbw2016/article/details/84982422