ie9下在iframe中使用document.selection.createRange().text獲取的值爲空的解決辦法

最近公司之前的用iframe框架寫的一個老系統要求實現一個身份證上傳並且預覽的需求,兼容到ie9;由於這個項目保密,所以我這邊仿照寫了個demo

效果圖

 源碼

<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			* {
				padding: 0;
				margin: 0;
				font-family: "微軟雅黑";
			}
			
			.imgwrap {
				width: 300px;
				height: 190px;
				border: 1px solid #ccc;
				border-radius: 10px;
				text-align: center;
				line-height: 190px;
				position: relative;
				background: #eee;
				overflow: hidden;
				font-family: "微軟雅黑";
			}
			
			.imgwrap input {
				position: absolute;
				width: 100%;
				left: 0;
				top: 0;
				outline: none;
				opacity: 0;
			}
			
			.imgwrap img {
				position: absolute;
				width: 100%;
				height: 100%;
				left: 0;
				top: 0;
				outline: none;
			}
			
			.tooltips {
				width: 300px;
				text-align: center;
			}
			
			.tooltips img {
				width: 80px;
			}
			
			.tooltips h5 {
				line-height: 40px;
				font-weight: normal;
			}
			
			.imgbox {
				float: left;
			}
			
			.imgboxs {
				padding: 0 10px;
				overflow: hidden;
			}
			
			.ml25 {
				margin-left: 25px;
			}
			
			.uploadiden {
				display: -webkit-box;
				/* 老版本語法: Safari, iOS, Android browser, older WebKit browsers. */
				display: -moz-box;
				/* 老版本語法: Firefox (buggy) */
				display: -ms-flexbox;
				/* 混合版本語法: IE 10 */
				display: -webkit-flex;
				/* 新版本語法: Chrome 21+ */
				display: flex;
				/* 新版本語法: Opera 12.1, Firefox 22+ */
			}
			
			.notice {
				font-size: 12px;
				color: #888;
				line-height: 20px;
			}
			
			.oprbtn {
				position: absolute;
				bottom: 0;
				left: 0;
				line-height: 30px;
				display: -webkit-box;
				/* 老版本語法: Safari, iOS, Android browser, older WebKit browsers. */
				display: -moz-box;
				/* 老版本語法: Firefox (buggy) */
				display: -ms-flexbox;
				/* 混合版本語法: IE 10 */
				display: -webkit-flex;
				/* 新版本語法: Chrome 21+ */
				display: flex;
				/* 新版本語法: Opera 12.1, Firefox 22+ */
				background: rgba(0, 0, 0, 0.5);
				width: 100%;
				color: #fff;
				text-align: center;
				display: none;
			}
			
			.oprbtn li {
				width: 49%;
				list-style: none;
				cursor: pointer;
			}
			
			.br {
				border-right: 1px solid #eee;
			}
			
			#zmz {
				display: none;
			}
			
			#fmz {
				display: none;
			}
			
			.imgopr:hover .oprbtn {
				display: -webkit-box;
				/* 老版本語法: Safari, iOS, Android browser, older WebKit browsers. */
				display: -moz-box;
				/* 老版本語法: Firefox (buggy) */
				display: -ms-flexbox;
				/* 混合版本語法: IE 10 */
				display: -webkit-flex;
				/* 新版本語法: Chrome 21+ */
				display: flex;
				/* 新版本語法: Opera 12.1, Firefox 22+ */
			}
		</style>
	</head>

	<body>
		<div style="padding: 15px;" class="uploadiden">
			<span>上傳圖片</span>
			<div>
				<div class="imgboxs">
					<div class="imgbox">
						<div class="imgwrap">
							<div class="imgopr">
								<img src="" id="zmz" />
								<ul class="oprbtn">
									<li class="br" onclick="getrImg()" style="float: left;">重新上傳</li>
									<li onclick="delimg1()" style="float: right;">刪除</li>
								</ul>
							</div>
							<input type="file" accept="image/*" name="" id="img_z" value="" onchange="getzImg(this)" />
							<span onclick="getrImg()">+添加正面</span>
						</div>
						<div class="tooltips">
							<h5>示例</h5>
							<img src="img/2.jpg" />
						</div>
					</div>
					<div class="imgbox ml25">
						<div class="imgwrap" id="sd">
							<div class="imgopr">
								<img src="" id="fmz" />
								<ul class="oprbtn">
									<li class="br" onclick="fanmian()" style="float: left;">重新上傳</li>
									<li onclick="delimg2()" style="float: right;">刪除</li>
								</ul>
							</div>
							<input type="file" accept="image/*" onchange="getfImg(this)" value="" id="img_f" />
							<span onclick="fanmian()">+添加反面</span>
						</div>
						<div class="tooltips">
							<h5>示例</h5>
							<img src="img/1.jpg" />
						</div>
					</div>
				</div>
				<div>
					<div class="notice">
						注:
						<p>1、需上傳清晰的身份證正面,反面共2張圖片</p>
						<p>2、照片不超過5M,支持jpg、jpeg、png</p>
					</div>
				</div>
			</div>
		</div>
	</body>
	<script src="js/jquery-1.11.3.min.js"></script>
	<script type="text/javascript">
		$('.imgopr').hover(function(){
			$(this).children('.oprbtn').show()
		},function(){
			$(this).children('.oprbtn').hide()
		})
		//點擊正面照片中重新上傳
		function getrImg() {
			$('#img_z').click();
		}

		function getzImg(imgFile) {
			var windowURL = window.URL || window.webkitURL;
        	var dataURL;
			if(navigator.appName == "Microsoft Internet Explorer"&&parseInt(navigator.appVersion.split(";")[1].replace(/[ ]/g, "").replace("MSIE",""))<=9){  
			    var imgObj = document.getElementById("zmz");
	            var file = document.getElementById("img_z");
	            file.select();
	            /*file.blur();*/
	            window.parent.document.body.focus()
	            dataURL = document.selection.createRange().text;
	            console.log(dataURL)
	          //  document.selection.empty();
	            imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + dataURL + "',sizingMethod=image)";
	            //圖片必須顯示出來,才能獲取原圖片的高和寬
	            $("#zmz").show();
	            //獲取原圖片的高和寬
	            imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + dataURL + "',sizingMethod=scale)";
	       
			}  
			else{
				var file = imgFile.files[0];
				var filesize = (imgFile.files[0].size / 1024).toFixed(2)
				if(filesize > (5 * 1024)) {
					alert("圖片大小超過5M,上傳失敗")
				} else {
					var reader = new FileReader();
					reader.readAsDataURL(file); //將文件讀取爲Data URL小文件   這裏的小文件通常是指圖像與 html 等格式的文件
					$("#zmz").show()
					reader.onload = function(e) {
						$("#zmz").attr("src", e.target.result);
					}
				}
			}
			

		}
		//刪除正面圖片
		function delimg1() {
			$("#zmz").attr("src", '');
			$("#zmz").hide()
		}
		//添加反面圖片
		function fanmian() {
			$('#img_f').click();
		}
        
		function getfImg(imgFile) {
 			var windowURL = window.URL || window.webkitURL;
        	var dataURL;
			if(navigator.appName == "Microsoft Internet Explorer"&&parseInt(navigator.appVersion.split(";")[1].replace(/[ ]/g, "").replace("MSIE",""))<=9){  
			    var imgObj = document.getElementById("fmz");
	            var file = document.getElementById("img_f");
	            file.select();
	            window.parent.document.body.focus()
	            var dataURL = document.selection.createRange().text;
	            console.log(dataURL)
	            document.selection.empty();
	            imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + dataURL + "',sizingMethod=image)";
	            $("#fmz").show();
	            imgObj.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + dataURL + "',sizingMethod=scale)";
	       
			}  else{
				var file = imgFile.files[0];
				 console.log(file)
				var filesize = (imgFile.files[0].size / 1024).toFixed(2)
				if(filesize > (5 * 1024)) {
					alert("圖片大小超過5M,上傳失敗")
				} else {
					var reader = new FileReader();
					reader.readAsDataURL(file);
					$("#fmz").show()
					reader.onload = function(e) {
						$("#fmz").attr("src", e.target.result);
					}
				}
			}
		}

		function delimg2() {
			$("#fmz").attr("src", '');
			$("#fmz").hide()
		}
	</script>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章