js雙重引用導致

js雙重引用會 導致 有問題。

 

去掉其中一個。

 

2.注意 load function ,這是要等待資源加載完成才觸發的方法。

會導致 undefined。

popup.addEventListener("load", function(e){
   console.log("All resources finished loading!");
   popup.document = (popup.contentWindow || popup.contentDocument);
   if(popup.document.document) popup.document = popup.document.document;
   console.log("info load2" , popup.document);
});

 

popup.document undefined

 

 

-------------------------


//
// 新環境構築疎通テストの一時修正 2019-09-01 Add Satrt
window.createPopupIFrame = function (){
	var popup = document.createElement("iframe"),
		isShown = false, popupClicked = false;
	popup.src = "about:blank";
	popup.style.position = "absolute";
	popup.style.border = "0px";
	popup.style.display = "none";
	popup.id = "popup_iframe";
	popup.addEventListener("load", function(e){
		console.log("All resources finished loading!");
		popup.document = (popup.contentWindow || popup.contentDocument);
		if(popup.document.document) popup.document = popup.document.document;
		console.log("info load2" , popup.document);
	});
	document.body.appendChild (popup);
	popup.document = (popup.contentWindow || popup.contentDocument);
	if(popup.document.document) popup.document = popup.document.document;
	console.log("info load1" , popup.document);
	var hidepopup = function (event){
		if(isShown)
			setTimeout(function (){
				if(!popupClicked){
					popup.hide();
				}
				popupClicked = false;
			}, 500);
	}

	popup.show = function (x, y, w, h, pElement){
		if(typeof(x) !== 'undefined'){
			var elPos = [0, 0];
			if(pElement) elPos = findPos(pElement);
			elPos[0] += y, elPos[1] += x;

			if(isNaN(w)) w = popup.document.scrollWidth;
			if(isNaN(h)) h = popup.document.scrollHeight;
			if(elPos[0] + w > document.body.clientWidth) elPos[0] = document.body.clientWidth - w - 5;
			if(elPos[1] + h > document.body.clientHeight) elPos[1] = document.body.clientHeight - h - 5;

			console.log(pElement)
			popup.style.left = "100px";
			popup.style.top ="100px";
			popup.style.width = w + 30 + "px";
			popup.style.height = h + 30 + "px";
		}
		popup.style.display = "block";
		isShown = true;
	}

	popup.hide = function (){
		isShown = false;
		popup.style.display = "none";
	}
	// 新環境構築疎通テストの一時修正 2019-09-01 Add   End
	window.addEventListener('click', hidepopup, true);
	window.addEventListener('blur', hidepopup, true);
	return popup;
}
//
function findPos(obj, foundScrollLeft, foundScrollTop) {
	var curleft = 0;
	var curtop = 0;
	if(obj.offsetLeft) curleft += parseInt(obj.offsetLeft);
	if(obj.offsetTop) curtop += parseInt(obj.offsetTop);
	if(obj.scrollTop && obj.scrollTop > 0) {
		curtop -= parseInt(obj.scrollTop);
		foundScrollTop = true;
	}
	if(obj.scrollLeft && obj.scrollLeft > 0) {
		curleft -= parseInt(obj.scrollLeft);
		foundScrollLeft = true;
	}
	if(obj.offsetParent) {
		var pos = findPos(obj.offsetParent, foundScrollLeft, foundScrollTop);
		curleft += pos[0];
		curtop += pos[1];
	} else if(obj.ownerDocument) {
		var thewindow = obj.ownerDocument.defaultView;
		if(!thewindow && obj.ownerDocument.parentWindow)
			thewindow = obj.ownerDocument.parentWindow;
		if(thewindow) {
			if (!foundScrollTop && thewindow.scrollY && thewindow.scrollY > 0) curtop -= parseInt(thewindow.scrollY);
			if (!foundScrollLeft && thewindow.scrollX && thewindow.scrollX > 0) curleft -= parseInt(thewindow.scrollX);
			if(thewindow.frameElement) {
				var pos = findPos(thewindow.frameElement);
				curleft += pos[0];
				curtop += pos[1];
			}
		}
	}
	return [curleft,curtop];
}

 

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