Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.01.2010, 16:22
Новичок на форуме
Отправить личное сообщение для Ly_Zer Посмотреть профиль Найти все сообщения от Ly_Zer
 
Регистрация: 11.01.2010
Сообщений: 2

Java скрипт в эксплоере не работает
Вот собственно код. Везде(во всех браузерах) отображаеться нормально. то есть содиржимое открываеться в том месте где находиться пользователь. При прокрутке вниз и вверх крутиться вместе сним. экран притемляет. А в эксплоере он отображаеться сверху, те на видимой части экрана и при прикруткеостаеться на своем месте
if(!sswgt_CartManager){

var sswgt_CartManager = {
	'prefix': 'my_',
	'mode': 'frame',
	'add2cart': function(objA){
		this.shop_url = objA.getAttribute('rel');
		sizes = getPageSize();
		this.show(objA.href+'&widgets=1', sizes[2]*0.7, sizes[3]*0.7);
		return false;
	},
	'go2cart': function(objA){
		this.shop_url = objA.getAttribute('rel');
		sizes = getPageSize();
		this.show(objA.href, sizes[2]*0.7, sizes[3]*0.7);
		return false;
	},
	'_show': function(width, height){
	
		this.hide(true);
		hideSelectBoxes();
		hideFlash();
		this.div();
		this.base();
		
		if(this.mode == 'frame'){
			this.frame(this.params.url, width, height);
		}else if(this.mode == 'layer'){
			this.layer(this.params.layer_id, width, height);
		}
		
		this.border(this.objMain);
		this.closeButton(this.objBorder);
		
		var old_onresize= window.onresize;
		window.onresize = function(){
			
			with(sswgt_CartManager){
			
				if(!(objOverlay && objDiv)){return;}

				var arrayPageSize = getPageSize();
				objOverlay.style.width = arrayPageSize[2]+'px';
				objOverlay.style.height = arrayPageSize[3]+'px';
				objBase.style.width = arrayPageSize[2]+'px';
				objBase.style.height = arrayPageSize[3]+'px';
				if(sswgt_CartManager.mode == 'frame'){
					sswgt_CartManager.frame(null, frameWidth, frameHeight);
				}else{ if(sswgt_CartManager.mode == 'layer'){
					this.layer(sswgt_CartManager.params.layer_id, frameWidth, frameHeight);
				}}
				border(sswgt_CartManager.objMain);
				closeButton(objBorder);
			};
			if(old_onresize){old_onresize();}
		};
		var old_onkeydown = document.onkeydown;
		document.onkeydown = function (event){
			
			event = event?event:window.event;
			if(event){
			switch (event.keyCode ? event.keyCode : event.which ? event.which : null){
				case 0x1B: sswgt_CartManager.hide();
			}}
			if(old_onkeydown){old_onkeydown();}
		};
	},
	'showLayer': function(layer_id, width, height){
		this.mode = 'layer';
		this.params = {'layer_id': layer_id};
		this._show(width, height);
		showSelectBoxes();
	},
	'show': function(url, width, height){
		this.mode = 'frame';
		this.params = {'url': url};
		//__DEBUG
		//alert(url+'\n::\n'+this.shop_url);
		this._show(width, height);
	},
	'resizeFrame': function(width, height){
		if(width != null){this.frameWidth = width;}
		if(height != null){this.frameHeight = height;}
		
		this.frame(null, this.frameWidth, this.frameHeight);
		this.border(this.objFrame);
		this.closeButton(this.objBorder);
	},
	'div': function(){
	
		this.objDiv = document.createElement('div');
		setStyle(this.objDiv, 'zIndex:100; position: absolute; left:0; top: 0; background:url("n.gif") no-repeat; backgroundAttachment:fixed');
		var objBody = document.getElementsByTagName("body").item(0);
		objBody.appendChild(this.objDiv);
		this.objDiv.style.backgroundAttachment = 'fixed';
	},
	'layer': function(layer_id, width, height){
	
		var objLayer = getLayer(layer_id);
		setStyle(objLayer,'visibility:hidden; display: block');
		if(!width){width = objLayer.offsetWidth;}
		if(!height){height = objLayer.offsetHeight;}

		this.frameWidth = width;
		this.frameHeight = height;
		var page = getPageSize();
		var left = (page[2] - width)/2;
		if(left<0){left=0;}
		var top = (page[3] - height)/2;
		if(top<10){top=10;}
		
		this.objBase.appendChild(objLayer);
		setStyle(objLayer, 'top:'+top+'px; left:'+left+'px; width:'+width+'px; height:'+height+'px;overflow: auto;zIndex:121; position:absolute;visibility:visible');
		
		this.objBase.style.visibility = 'visible';		
		this.objMain = objLayer;
	},
	'frame': function(url, width, height){

		this.frameWidth = width;
		this.frameHeight = height;
		var page = getPageSize();
		var left = (page[2] - width)/2;if(left<0){left=0;}
		var top = (page[3] - height)/2;if(top<10){top=10;}
		var objFrame = document.getElementById(this.prefix+'frame');
		if(!objFrame){

			var objT = document.createElement('div');
			objT.style.display = 'none';
			objT.innerHTML = '<iframe id="'+this.prefix+'frame" frameborder="0"></iframe>';
			this.objBase.appendChild(objT);
			objFrame = document.getElementById(this.prefix+'frame');
			this.objBase.appendChild(objFrame);
			this.objBase.removeChild(objT);
			setStyle(objFrame, 'zIndex:120; position:absolute; backgroundColor:#ffffff');
	
			var objLoading = document.createElement('div');
			this.objBase.appendChild(objLoading);
			
			setStyle(objLoading, 'backgroundColor:#ffffff; zIndex:121; position:absolute; padding:20px; left:'+(page[2]/2-50+20)+'px; top:'+(page[3]/2-50)+'px;visibility: visible;');
			var objImgLoading = document.createElement('img');
//			objImgLoading.src = this.shop_url+'published/SC/html/scripts/images_common/loading.gif';
			objImgLoading.src = ((window.CONF_ON_WEBASYST||(this.shop_url.search('webasyst.net')!=-1))?(this.shop_url.replace(/shop\//,'')+'shop/'):(this.shop_url+'published/SC/html/scripts/'))+'images_common/loading.gif';
			objLoading.appendChild(objImgLoading);
	
			setTimeout(function(){objFrame.src = url;},100);
			var objBase = this.objBase;
						
			function objFrame_onload(){
				if(objFrame.style.visibility != 'visible'){
					var objLoading1 = objLoading;
					var objBase1 = objBase;
					setTimeout(function(){
						if(objLoading1 && objLoading1.parentNode){
							objLoading1.parentNode.removeChild(objLoading1);
							objLoading1 = null;
						}
						objBase1.style.visibility = 'visible';}, 800);
				}
			};

			if (objFrame.addEventListener) objFrame.addEventListener("load",objFrame_onload,false);
			else if (objFrame.attachEvent) objFrame.attachEvent("onload", objFrame_onload);

			this.objFrame = objFrame;
			this.objMain = this.objFrame;	
		}
		setStyle(objFrame, 'top:'+top+'px; left:'+left+'px; width:'+width+'px; height:'+height+'px');
	},
	'base': function(){

		if(!/MSIE/.test(navigator.userAgent)){
			var objBase = document.createElement("div");
			objBase.style.visibility = 'hidden';
		}else{
			this.objDiv.innerHTML += '<div'+' id="myBase" style=\'z-index:95; position:absolute; visibility:hidden; top: expression(parseInt(document.documentElement.scrollTop || document.body.scrollTop, 10)+"px"); left: expression(parseInt(document.documentElement.scrollLeft || document.body.scrollLeft, 10)+"px");\'></div>';
			var objBase = document.getElementById('myBase');
		}
		
		setStyle(objBase, 'zIndex:95');
		if(!/MSIE/.test(navigator.userAgent)){setStyle(objBase, 'top:0; left:0; position: fixed');}
	
		var arrayPageSize = getPageSize();
		objBase.style.width = arrayPageSize[2]+'px';
		objBase.style.height = arrayPageSize[3]+'px';
		
		objBase.onclick = function(ev){if(getEventObject(ev).target.id && getEventObject(ev).target.id == this.id){sswgt_CartManager.hide();}};
		
		this.objDiv.insertBefore(objBase, this.objDiv.firstChild);
		this.objBase = objBase;
		this.overlay();
	},
	'overlay':function(){
		var objOverlay = document.getElementById(this.prefix+'overlay');
		if(!objOverlay){
			objOverlay = document.createElement('div');
			objOverlay.id = this.prefix+'overlay';
			this.objBase.appendChild(objOverlay);
		}
 
		var left = 0;
		var top = 0;
		var width = this.objBase.offsetWidth;
		var height = this.objBase.offsetHeight;
		setStyle(objOverlay, 'position:absolute; visibility: visible; top:'+top+'; left:'+left+'; width:'+width+'px; height:'+height+'px; backgroundColor:#000000');
		setOpacity(objOverlay, 0.7);
		objOverlay.onclick = function(ev){if(getEventObject(ev).target.id && getEventObject(ev).target.id == this.id){sswgt_CartManager.hide();}};

		this.objOverlay = objOverlay;
	},
	'hide': function(remove){
		if(this.objDiv && this.objDiv.parentNode){
			if(this.objOverlay){
				this.objDiv.appendChild(this.objOverlay);
			}
			this.objDiv.style.display = "none";
			if(remove){
			
				if(this.mode == 'layer'){
					setStyle(this.objMain, 'display:none');
					document.body.appendChild(this.objMain);
				}
				this.objDiv.parentNode.removeChild(this.objDiv);
				this.objDiv = null;
				this.objOverlay = null;
			}
			showSelectBoxes();
			showFlash();
		}
	},
	'closeButton': function(parentObject){
	
		with(this){
			var objCloseButton = document.getElementById(prefix+'closeButton');
			if(!objCloseButton){
				objCloseButton = document.createElement('img');
				objCloseButton.id = prefix+'closeButton';
			}
Ответить с цитированием
  #2 (permalink)  
Старый 11.01.2010, 16:23
Новичок на форуме
Отправить личное сообщение для Ly_Zer Посмотреть профиль Найти все сообщения от Ly_Zer
 
Регистрация: 11.01.2010
Сообщений: 2

Вторая часть скрипта
var left = parentObject.offsetLeft+parentObject.offsetWidth-22;
			var top = parentObject.offsetTop-25;
			setStyle(objCloseButton, 'position:absolute; top:'+top+'; left:'+left+'; cursor:pointer; cursor:hand');
			//DEBUG:
			//alert(this.shop_url);
			//objCloseButton.src = ((window.CONF_ON_WEBASYST||(this.shop_url.search('webasyst.net')!=-1))?(this.shop_url.replace(/shop\//,'')):(this.shop_url+'published/SC/html/scripts/'))+'images_common/close.gif';
			objCloseButton.src = ((window.CONF_ON_WEBASYST||(this.shop_url.search('webasyst.net')!=-1))?(this.shop_url.replace(/shop\//,'')+'shop/'):(this.shop_url+'published/SC/html/scripts/'))+'images_common/close.gif';
//			objCloseButton.src = this.shop_url+'published/SC/html/scripts/images_common/close.gif';
			objCloseButton.onclick = function(){sswgt_CartManager.hide();return false;};
			objBase.appendChild(objCloseButton);
		};
	},
	'border': function(parentObj){
		var objBorder = document.getElementById(this.prefix+'border');
		if(!objBorder){
			objBorder = document.createElement('div');
			objBorder.id = this.prefix+'border';
			this.objBase.appendChild(objBorder);
		}

		var border_width = 0;
		var left = parseInt(parentObj.style.left,10)-border_width;
		var top = parseInt(parentObj.style.top,10)-border_width;
		var width = parentObj.offsetWidth;
		var height = parentObj.offsetHeight;
		if(/MSIE/.test(navigator.userAgent)){
			width += border_width*2;
			height += border_width*2;
		}		
		setStyle(objBorder, 'position:absolute; top:'+top+'; left:'+left+'; width:'+width+'px; height:'+height+'px; border: '+border_width+'px solid #efefef');
		this.objBorder = objBorder;
	}
};

function showSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

function hideSelectBoxes(){
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

function showFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}
	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

function hideFlash(){
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}
	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}
}

function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	
	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
}

function setOpacity(element, value){  
	
  if (value == 1){
  	element.style.opacity = (/Gecko/.test(navigator.userAgent) && !/Konqueror|Safari|KHTML/.test(navigator.userAgent)) ? 0.999999 : null;
    if(/MSIE/.test(navigator.userAgent)){  
      element.style.filter = element.style.filter.replace(/alpha\([^\)]*\)/gi, '');
     }  
  } else {  
    if(value < 0.00001){ value = 0;}  
  	element.style.opacity = value;
    if(/MSIE/.test(navigator.userAgent)){  
      element.style.filter = element.style.filter.replace(/alpha\([^\)]*\)/gi, '')+ 'alpha(opacity='+value*100+')';
    }  
  }   
}

function setStyle(obj, style_str){

	var styles = style_str.split(";");
	with(obj){
		for(var k=styles.length-1; k>=0; k--){
			var _style = styles[k].split(':', 2);
			if(!_style[1]){continue;}
			_style[0] = _style[0].replace(/^\s|\s$/, '');
			_style[1] = _style[1].replace(/^\s|\s$/, '');
			style[_style[0]] = _style[1];
		}
	};
}

function getEventObject(ev){
	
	var my_ev = {};
	ev = ev?ev:window.event;
	if(ev.srcElement){
		my_ev.target = ev.srcElement;
	}else{
		my_ev.target = ev.target;
	}
	
	my_ev.ev = ev;
	return my_ev;
}


}
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2010, 16:28
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Локализируйте проблемный участок в скрипте или дайте ссылку на страничку с примером. Сомневаюсь, что кто-то захочет сейчас разбираться в этой куче кода.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт не работает в FF и опера, но работает в IE(в чем дело???) Cepera Firefox/Mozilla 1 24.08.2012 16:46
скрипт multibox для joomla - не работает в опере lamanzh Opera, Safari и др. 17 26.06.2009 12:35
Почему не работает скрипт, подскажите aviaks Ваши сайты и скрипты 2 05.05.2009 14:38
Скрипт не работает в опере, работает в IE XpycTuk Общие вопросы Javascript 9 06.03.2009 15:50
Скрипт меню-гармошки работает выборочно Extern Элементы интерфейса 2 23.02.2009 15:32