`
faylai
  • 浏览: 78221 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

让Ext 的Window 弹出iframe

    博客分类:
  • js
阅读更多

需求:

 

有时候Window 内容过多无法显示,奈何只能限制与iframe 中

 

解决思路:

1、先让iframe 先全屏再让window 全屏

 

兼容缺陷:

 

支持到Ext3.4.1

firefox chrome 需要修改 iframe 所有父节点 postion 的positon 样式,有可能导致父标签样式显示异常

 

优点:

完美支持IE

 

代码如下

Ext.ns('Ext.ui');
/*
 * @config src // iframe url @config firameId // iframe ID @public method
 * {htmlElement getIframe(void)}
 */
Ext.ui.BreakWindow = Ext.extend(Ext.Window, {

			initComponent : function() {
				this.on("hide", this.restoreMax, this);
				Ext.ui.BreakWindow.superclass.initComponent.apply(this, arguments);
			},
			maximized : true,
			restoreMax : function() {
				if (this.iframeEl) {
					var el = this.iframeEl;
					var config = this.restoreConfig;
					if (config) {
						this.restoreRelativeParentNode();
						el.applyStyles({
									position : config.position,
									"z-index" : config['z-index']
								});
						el.setSize(config.width, config.height);

					}

				}
			},
			staticRelativeParentNode : function() {
				var pwin = window.parent;
				var Ext = pwin.Ext;
				if (this.isLowIE()) {
					if (this.restoreConfig.parentNode != Ext.getBody().dom) {
						Ext.getBody().dom.appendChild(this.iframeEl.dom);
					}
					return;
				}

				var start = this.iframeEl.dom.parentNode;
				var rNodes = [];
				this.rNodes = rNodes;
				var el;
				while (start) {
					el = Ext.get(start);
					if (el.getStyle("position") != "static") {
						rNodes.push({
									id : el.id,
									position : el.getStyle("position")
								});
						el.setStyle("position", "static");
					}
					start = start.parentNode;
					if (start.tagName == 'BODY') {
						break;
					}
				}
			},
			restoreRelativeParentNode : function() {
				var pwin = window.parent;
				var Ext = pwin.Ext;
				if (this.isLowIE()) {
					if (this.restoreConfig.parentNode != Ext.getBody().dom) {
						this.restoreConfig.parentNode.appendChild(this.iframeEl.dom);
					}
					return;
				}
				var rNodes = this.rNodes;
				for (var i = 0; i < rNodes.length; i++) {
					Ext.get(rNodes[i].id).setStyle("position", rNodes[i].position);
				}
				// console.dir(parent.document.getElementsByTagName("iframe"));
			},
			isLowIE : function() {
				return Ext.isIE && !Ext.isIE10;
			},
			show : function() {
				var superShow = Ext.ui.BreakWindow.superclass.show;
				var win = window;
				var me = this;
				if (win.parent) {

					var pwin = window.parent;
					var iframes = pwin.document.getElementsByTagName("iframe");
					var iframe
					for (var i = 0; i < iframes.length; i++) {
						if (iframes[i].contentWindow.location.href === win.location.href) {
							iframe = iframes[i];
						}
					}
					if (iframe) {
						var D = pwin.Ext.lib.Dom;
						var w = D.getViewWidth(), h = D.getViewHeight();
						var el = pwin.Ext.get(iframe);
						this.iframeEl = el;
						this.restoreConfig = {
							width : el.getWidth(),
							height : el.getHeight(),
							position : el.getStyle("position"),
							"z-index" : el.getStyle("z-index"),
							parentNode : el.dom.parentNode
						};
						this.staticRelativeParentNode();
						el.applyStyles({
									position : 'absolute',
									top : 0,
									left : 0,
									"background-color" : 'white',
									"z-index" : 2000
								});
						el.setSize(w, h);
						superShow.apply(this, arguments);
					}

				} else {
					superShow.apply(this, arguments);
				}

			}

		});

Ext.reg('breakwindow', Ext.ui.BreakWindow);

 

分享到:
评论

相关推荐

    Ext.window从右下角弹出/隐藏

    ### Ext.window从右下角弹出/隐藏:深入解析与实现 #### 一、概述 在Web应用开发中,为了提升用户体验,开发者经常会利用各种UI框架来实现丰富的交互效果。ExtJS作为一款成熟且功能强大的JavaScript框架,在这方面...

    Ext window的使用

    它提供了一套完整的组件模型,其中包括“窗口”(Window)组件,这是创建弹出式对话框或浮动面板的重要工具。本文将深入探讨Ext window的使用,以及如何通过源码理解和定制这些组件。 1. **Ext.Window基础知识** ...

    Ext_Window用法

    Ext_Window用法

    一个简单的Ext.Window中插入图片的例子

    在Ext JS这个强大的JavaScript框架中,`Ext.Window`是一个常用组件,用于创建浮动、可弹出的窗口。在Web应用程序中,我们常常需要在这些窗口中展示各种内容,包括文字、表格、按钮,当然还有图片。本文将详细介绍...

    ext 仿window 界面

    "ext 仿window 界面"指的是使用EXTJS 框架来创建类似于Windows桌面操作系统的用户界面,提供一种熟悉且直观的交互体验。这种设计方式可以使Web应用在视觉上更接近本地应用,提高用户的使用舒适度。 EXTJS 提供了...

    EXT Window 通过DIV布局(源代码)

    Ext.Window 通过DIV布局,通过DIV填充window内容,带Ext所需文件。

    Ext-window属性

    【Ext.Window属性详解】 在Ext JS中,`Ext.Panel`是一个强大的组件,它可以用来创建各种复杂的用户界面。当Panel被用作窗口时,它通常会继承或包含`Ext.window.Window`的一些属性。以下是对`Ext.Panel` API中与`...

    ext使用--Panel和iframe联合使用时页面高度的解决方法

    var iframe = Ext.create('Ext.ux.IFrame', { src: 'http://example.com', listeners: { load: function() { var iframeBody = this.getDoc().body; var iframeHeight = iframeBody.offsetHeight + 'px'; ...

    Ext.window的一个扩展组件SuperWin.js

    Ext.window的一个扩展组件SuperWin.js.可灵活自主随意定位,和显示模式;

    EXT弹出框改装实现

    EXT弹出框改装实现 EXT是一个流行的JavaScript框架,主要用于构建富客户端应用。它提供了一整套组件,包括弹出框(Window),使得开发者能够轻松创建交互式的用户界面。EXT弹出框改装通常涉及到自定义样式、行为...

    各种弹出窗口 ext窗口

    EXT 2.0 MessageBox 和 JavaScript 弹出窗口是两种在 Web 应用程序中常见的用户交互方式。它们允许开发者向用户展示信息、询问问题或获取输入。EXT 是一个流行的 JavaScript 框架,特别是它的 EXT JS 库,用于构建富...

    EasyExt_003_第一个组件Ext.Window

    EasyExt_003_第一个组件Ext.Window EasyExt_003_第一个组件Ext.Window

    Ext的弹出对话框1111

    在这个场景中,"Ext的弹出对话框1111"指的是如何在Ext环境中设置和使用对话框功能。 首先,环境搭建是使用Ext的第一步。你需要下载ExtJS库,这通常包含了一个压缩包,其中包含了必要的JavaScript文件和CSS样式表。...

    ExtJs4.2 Window常用方法

    在ExtJs 4.2版本中,`Window`组件是一个非常基础且重要的UI组件,它为开发者提供了一个灵活的弹出窗口解决方案。通过合理的配置,可以轻松实现各种弹出窗体的需求。 ### 配置属性详解 #### plain - **默认值**:`...

    Ext.window

    NULL 博文链接:https://oppovaan.iteye.com/blog/627655

    EXT4 源码+window下模拟ext2+linux_ext文件系统模拟

    EXT4是Linux操作系统中最常用的文件系统之一,它在2008年被引入到Linux内核,以替代较旧的EXT3系统。EXT4的主要改进包括更大的文件系统大小支持、更快的性能以及对大量小文件的优化处理。在这个压缩包中,你可能会...

    Windows读写Ext2/Ext3/Ext4文件系统

    可以读写Ext2,以Ext2方式挂载Ext3文件系统(不支持Ext3日志),不支持中文! It provides Windows NT4.0/2000/XP/2003/Vista/2008 with full access to Linux Ext2 volumes (read access andwrite access). This ...

    ext.net gridpanel 弹出窗

    ext.net gridpanel 弹出窗

    ext window

    extjs window的练习 主要介绍下window的主要的配置项,主要的方法和windowGroup

    iframe里无右键菜单

    当用户在`iframe`内右键点击时,`event.preventDefault()`方法会阻止浏览器弹出默认的右键菜单。 当然,这只是一个基础的实现。在实际应用中,你可能需要考虑更多的细节,比如跨域问题。如果`iframe`加载的页面与主...

Global site tag (gtag.js) - Google Analytics