我有一个系统首页(index.jsp),定义了一个Ext.window在右下角显示(id="alert"),另外使用<frameset>包含了上(top.jsp)\中(center.jsp)\下(bottom.jsp)三部分。
我想在top中获取index.jsp的定义的Ext.window组件并且令其显示在右下角。
我使用var w1 = parent.Ext.getCmp("alert");可以正常获得,但是我再使用w1.show()方法时确不能显示出来,而且没有错误......求大神指点啊!!!index.jsp主要代码:<script type="text/javascript">
new MyLib.TipsWindow({
id:"alert",
title:"提示",
autoHide:false, //5秒自动关闭
html:"您没有此模块的访问权限!"
});
</script>
...
<frameset rows="81,*,30" frameborder="no" border="0" framespacing="0">
<frame src="top.jsp" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" />
<frame src="main.html" name="mainFrame" id="mainFrame" />
<frame src="bottom.html" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" />
</frameset><noframes></noframes>
top.jsp主要代码:<script type="text/javascript">
var w1 = parent.Ext.getCmp("alert");
w1.show();
</script>
MyLib.TipsWindow代码:Ext.ns('MyLib');
/**
* 右下角的小贴士窗口
* @author tipx.iteye.com
* @params conf 参考Ext.Window
* conf中添加autoHide配置项, 默认3秒自动隐藏, 设置自动隐藏的时间(单位:秒), 不需要自动隐藏时设置为false
* @注: 使用独立的window管理组(manager:new Ext.WindowGroup()), 达到总是显示在最前的效果
*/
;(function($) {
//新建window组,避免被其它window影响显示在最前的效果
var tipsGroupMgr = new Ext.WindowGroup();
tipsGroupMgr.zseed=99999; //将小贴士窗口前置
$.TipsWindow = Ext.extend(Ext.Window, {
width:200,
height:150,
layout:'fit',
modal : false,
plain: true,
shadow:false, //去除阴影
draggable:false, //默认不可拖拽
resizable:false,
closable: true,
closeAction:'hide', //默认关闭为隐藏
autoHide:3, //n秒后自动隐藏,为false时,不自动隐藏
manager: tipsGroupMgr, //设置window所属的组
constructor: function(conf){
$.TipsWindow.superclass.constructor.call(this, conf);
this.initPosition(true);
},
initEvents: function() {
$.TipsWindow.superclass.initEvents.call(this);
//自动隐藏
if(false !== this.autoHide){
var task = new Ext.util.DelayedTask(this.hide, this), second = (parseInt(this.autoHide) || 3) * 1000;
this.on('beforeshow', function(self) {
task.delay(second);
});
}
this.on('beforeshow', this.showTips);
this.on('beforehide', this.hideTips);
Ext.EventManager.onWindowResize(this.initPosition, this); //window大小改变时,重新设置坐标
Ext.EventManager.on(window, 'scroll', this.initPosition, this); //window移动滚动条时,重新设置坐标
},
//参数: flag - true时强制更新位置
initPosition: function(flag) {
if(true !== flag && this.hidden){ //不可见时,不调整坐标
return false;
}
var doc = document, bd = (doc.body || doc.documentElement);
//ext取可视范围宽高(与上面方法取的值相同), 加上滚动坐标
var left = bd.scrollLeft + Ext.lib.Dom.getViewWidth()-4-this.width;
var top = bd.scrollTop + Ext.lib.Dom.getViewHeight()-4-this.height;
this.setPosition(left, top);
},
showTips: function() {
var self = this;
if(!self.hidden){return false;}
self.initPosition(true); //初始化坐标
self.el.slideIn('b', {
callback: function() {
//显示完成后,手动触发show事件,并将hidden属性设置false,否则将不能触发hide事件
self.fireEvent('show', self);
self.hidden = false;
}
});
return false; //不执行默认的show
},
hideTips: function() {
var self = this;
if(self.hidden){return false;}
self.el.slideOut('b', {
callback: function() {
//渐隐动作执行完成时,手动触发hide事件,并将hidden属性设置true
self.fireEvent('hide', self);
self.hidden = true;
}
});
return false; //不执行默认的hide
}
});
})(MyLib);
我想在top中获取index.jsp的定义的Ext.window组件并且令其显示在右下角。
我使用var w1 = parent.Ext.getCmp("alert");可以正常获得,但是我再使用w1.show()方法时确不能显示出来,而且没有错误......求大神指点啊!!!index.jsp主要代码:<script type="text/javascript">
new MyLib.TipsWindow({
id:"alert",
title:"提示",
autoHide:false, //5秒自动关闭
html:"您没有此模块的访问权限!"
});
</script>
...
<frameset rows="81,*,30" frameborder="no" border="0" framespacing="0">
<frame src="top.jsp" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" />
<frame src="main.html" name="mainFrame" id="mainFrame" />
<frame src="bottom.html" name="bottomFrame" scrolling="No" noresize="noresize" id="bottomFrame" />
</frameset><noframes></noframes>
top.jsp主要代码:<script type="text/javascript">
var w1 = parent.Ext.getCmp("alert");
w1.show();
</script>
MyLib.TipsWindow代码:Ext.ns('MyLib');
/**
* 右下角的小贴士窗口
* @author tipx.iteye.com
* @params conf 参考Ext.Window
* conf中添加autoHide配置项, 默认3秒自动隐藏, 设置自动隐藏的时间(单位:秒), 不需要自动隐藏时设置为false
* @注: 使用独立的window管理组(manager:new Ext.WindowGroup()), 达到总是显示在最前的效果
*/
;(function($) {
//新建window组,避免被其它window影响显示在最前的效果
var tipsGroupMgr = new Ext.WindowGroup();
tipsGroupMgr.zseed=99999; //将小贴士窗口前置
$.TipsWindow = Ext.extend(Ext.Window, {
width:200,
height:150,
layout:'fit',
modal : false,
plain: true,
shadow:false, //去除阴影
draggable:false, //默认不可拖拽
resizable:false,
closable: true,
closeAction:'hide', //默认关闭为隐藏
autoHide:3, //n秒后自动隐藏,为false时,不自动隐藏
manager: tipsGroupMgr, //设置window所属的组
constructor: function(conf){
$.TipsWindow.superclass.constructor.call(this, conf);
this.initPosition(true);
},
initEvents: function() {
$.TipsWindow.superclass.initEvents.call(this);
//自动隐藏
if(false !== this.autoHide){
var task = new Ext.util.DelayedTask(this.hide, this), second = (parseInt(this.autoHide) || 3) * 1000;
this.on('beforeshow', function(self) {
task.delay(second);
});
}
this.on('beforeshow', this.showTips);
this.on('beforehide', this.hideTips);
Ext.EventManager.onWindowResize(this.initPosition, this); //window大小改变时,重新设置坐标
Ext.EventManager.on(window, 'scroll', this.initPosition, this); //window移动滚动条时,重新设置坐标
},
//参数: flag - true时强制更新位置
initPosition: function(flag) {
if(true !== flag && this.hidden){ //不可见时,不调整坐标
return false;
}
var doc = document, bd = (doc.body || doc.documentElement);
//ext取可视范围宽高(与上面方法取的值相同), 加上滚动坐标
var left = bd.scrollLeft + Ext.lib.Dom.getViewWidth()-4-this.width;
var top = bd.scrollTop + Ext.lib.Dom.getViewHeight()-4-this.height;
this.setPosition(left, top);
},
showTips: function() {
var self = this;
if(!self.hidden){return false;}
self.initPosition(true); //初始化坐标
self.el.slideIn('b', {
callback: function() {
//显示完成后,手动触发show事件,并将hidden属性设置false,否则将不能触发hide事件
self.fireEvent('show', self);
self.hidden = false;
}
});
return false; //不执行默认的show
},
hideTips: function() {
var self = this;
if(self.hidden){return false;}
self.el.slideOut('b', {
callback: function() {
//渐隐动作执行完成时,手动触发hide事件,并将hidden属性设置true
self.fireEvent('hide', self);
self.hidden = true;
}
});
return false; //不执行默认的hide
}
});
})(MyLib);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货