js 适用于多浏览器的弹出窗口
来源:互联网 发布:周杰伦台湾知乎 编辑:程序博客网 时间:2024/04/28 06:40
最近由于项目需要用到Js 操作弹出窗口显示,结合网络中的资源写了如下代码,如有不足,欢迎大家指点。
///创建弹出DIV层
function openDiv()
{
oPopup = _createPopup();
oPopupBody = oPopup.document.body;
if(oPopupBody.addEventListener) //Firefox
{
oPopupBody.addEventListener('mouseout',hidePop,false);
oPopupBody.addEventListener('mouseover',clrPopTimer,false);
}
else //IE
{
oPopupBody.attachEvent('onmouseout',hidePop);
oPopupBody.attachEvent('onmouseover',clrPopTimer);
}
}
function hidePop(){
if (!oPopup.isOpen) {
oPopTimer = setTimeout('oPopup.hide()',10);
}
}
function clrPopTimer(){
clearTimeout(oPopTimer);
}
/*** 弹出窗口 ****/
var isIe = (document.all) ? true:false;
var eDiv = document.createElement('div'); //显示弹出窗口的图层
var _createPopup = function() {
var SetElementStyles = function(element, styleDict) {
var style = element.style;
for (var styleName in styleDict) {
style[styleName] = styleDict[styleName] ;
}
}
SetElementStyles( eDiv, { 'position': 'absolute', 'top': 0 + 'px', 'left': 0 + 'px', 'width': 0 + 'px', 'height': 0 + 'px', 'zIndex': 1000, 'display' : 'none', 'overflow' : 'hidden' } ) ;
eDiv.body = eDiv;
var opened = false;
var setOpened = function(b) {
opened = b;
}
var getOpened = function() {
return opened ;
}
var getCoordinates = function(oElement) {
var coordinates = {x:0,y:0};
while(oElement) {
coordinates.x += oElement.offsetTop ;
coordinates.y += oElement.offsetLeft;
oElement = oElement.offsetParent;
}
return coordinates;
}
return {
htmlTxt : '',
document : eDiv,
isOpen : getOpened(),
isShow : false,
hide : function() {
SetElementStyles( eDiv, { 'top': 0 + 'px', 'left': 0 + 'px', 'width': 0 + 'px', 'height': 0 + 'px', 'display' : 'none' } );
eDiv.innerHTML = '';
this.isShow = false;
},
show : function(iX, iY, iWidth, iHeight, oElement) {
if (!getOpened())
{
$(document.body).append(eDiv);
setOpened(true);
};
this.htmlTxt = eDiv.innerHTML;
if (this.isShow)
{
this.hide();
};
eDiv.innerHTML = this.htmlTxt;
var coordinates = getCoordinates(oElement);
eDiv.style.top = (iX + coordinates.x) + 'px' ;
eDiv.style.left = (iY + coordinates.y) + 'px';
eDiv.style.width = iWidth + 'px';
eDiv.style.height = iHeight + 'px';
eDiv.style.display = 'block';
this.isShow = true;
}
}
}
- js 适用于多浏览器的弹出窗口
- js弹出浏览器窗口
- js使浏览器窗口最大化(适用于IE的方法)
- js弹出子窗口的浏览器兼容性问题
- Js的弹出窗口
- 弹出窗口的js
- js无弹出框关闭浏览器窗口
- ie 浏览器js关闭窗口弹出警告
- 适用于多浏览器的xmlHttp
- 通用的模式弹出窗口(适用于IE,Firefox,Opera,Netscape)
- 通用的模式弹出窗口(适用于IE,Firefox,Opera,Netscape)
- js 右下角的弹出窗口
- JS弹出窗口 漂亮的JS弹出 提示窗口
- IE浏览器网页弹出窗口的应对
- 用AS+JS实现IE等浏览器的强制弹出窗口源代码
- JAVA弹出浏览器窗口
- Silverlight - 浏览器弹出窗口
- 弹出浏览器窗口
- ELF之學習心得02 - ELF Header(e_ident篇)
- delphi编写保存多Socket的一个例子
- 少有人走的路---心智成熟的旅程
- web 开发入门分享
- 星载SAR产品数据格式
- js 适用于多浏览器的弹出窗口
- 精简IT费用的五个建议
- 【设计模式】设计模式的分类
- 教你使用MyBatis
- simulink/matlab仿真异步电机的动态模型
- 地址栏JS写法(转载)
- 想你,但不爱你
- Public,Private,Protected,Published作用域
- android中Invalidate和postInvalidate的区别