天天看點

關于extjs使用iframe:關閉的方法

  kevin  16:07:27

嘿嘿。忙嗎?問個小問題

var postWindow = new Ext.Window({

html:'<iframe scrolling="auto" frame width="100%" height="100%" src=IdIpMgrEdit/edit_tem/'+id+'></iframe>'

呼叫寶寶,嘿嘿。問個問題。

我new 一個window 然後通過html 屬性插入一個iframe頁面,這個頁面成功會彈出 成功。如果擷取這個頁面成功後 關閉這個;window呢

超児ゼ寶寶  16:08:29

postWindow.close() 不行?

kevin  16:09:10

主要是頁面這樣進來的

超児ゼ寶寶  16:09:54

你打開的效果是一個html  還是彈出的ext的window、

kevin  16:09:56

我在這個頁面 發送了送出插入資料庫的請求。成功後 提示成功。

你打開的效果是一個html  

暈了。

不是 我是通過  postWindow.show(); 顯示的

kevin  16:11:00

我的意思是 我不知道如何 在頁面傳回成功的時候 關閉這個 win

關于extjs使用iframe:關閉的方法
關于extjs使用iframe:關閉的方法

kevin  16:12:06

是這樣的。嘿嘿 打擾了。

超児ゼ寶寶  16:12:36

你要想什麼時候關閉?

什麼時候關閉就什麼時候調用就行了撒

kevin  16:13:33

我就是想 <iframe 插入的頁面 操作成功時 關系

成功後我用javascript 彈出的 

關于extjs使用iframe:關閉的方法

超児ゼ寶寶  16:14:32

現在插入成功沒?

kevin  16:14:37

成功了

超児ゼ寶寶  16:15:28

沒明白你意思    你邏輯有問題   為什麼剛彈出來又要關閉掉?

kevin  16:16:28

看這個例子吧。

關于extjs使用iframe:關閉的方法

紅色部分是 iframe進來的

送出後會彈出生成成功。

超児ゼ寶寶  16:17:29

生成成功後關閉window?

kevin  16:17:33

對的。

超児ゼ寶寶  16:17:42

- -  表達不清楚啊

Ext.Msg.alert('提示','生成成功',function(){})

Ext.Msg.alert('提示','生成成功',function(){win.close()})

kevin  16:19:09

不是不是。我這個送出是插入的 HTML 

在頁面中的,而傳回的 生成 成功是 從action裡面傳回的

現在是 不同的頁面,是以不知道怎麼處理了

超児ゼ寶寶  16:19:58

生成成功是背景生成的?

kevin  16:20:00

是不是我還沒有表達清楚 。。

是的 在控制器裡面 

傳回的 這句

kevin  16:21:00

echo "<script>alert('生成成功');window.history.go(-1)</script>";

超児ゼ寶寶  16:22:38

你送出是用的ajax送出的撒?

kevin  16:22:45

是的

送出不是ajax

直接請求的 控制器呢

超児ゼ寶寶  16:23:19

kevin  16:23:24

action過去的

;form

超児ゼ寶寶  16:24:43

這樣确實不好找window對象

kevin  16:25:33

是呀。就是覺得不知道怎麼找,也不知道有沒有其它方法解決 

超児ゼ寶寶  16:26:04

方法肯定有

超児ゼ寶寶  16:27:39

你要用背景關閉的話   前台就不要用ext的window  直接彈出另外一個html  指定相應的高  寬   去掉普通網頁的工具條什麼什麼的    然後你背景就可以用關閉網頁的方式關閉掉    

要麼你就換一種請求方法    用ext的ajax請求你的action   然後根據你背景相應的條件傳回一個參數值  根據這個參數值來控制調用win。close()

超児ゼ寶寶  16:29:14

我的話  會用第二種   而已我從來不在背景輸出前台的資訊

kevin  16:29:35

現在是 html裡面寫的東西比較多 要改extjs重新布局 太麻煩。

如果不用win的什麼顯示這個頁面?;pannel嗎?我是點選後彈出的

超児ゼ寶寶  16:29:56

沒有啊

那是你還不夠了解ext撒   你window裡面還能放formpanel   然後送出的話就是以form形式送出了

超児ゼ寶寶  16:32:37

思路這樣的  window下面放一個panel  下面放你的iframe    讓後用ajax送出     送出的話有2種方式    用form送出的話  不用傳參數  但是你相關的參數全在iframe裡面  是以這種方式暫時你不行   就直接用ajax的請求就行了   需要的參數一個一個傳過去就行了

Ext.Ajax.request({

url : culturePressForm.url,

params : {

method : 'getProInvProById',

id:global_businessId,

xxxxx:xxxxxx,

yyyyy:yyyyy//傳遞的參數

},

method : 'POST',

success : function(response) {

},

failure : function(form,action) {

Ext.Msg.alert('提示', '與伺服器互動失敗!');

}

});

超児ゼ寶寶  16:30:31

那是你還不夠了解ext撒   你window裡面還能放formpanel   然後送出的話就是以form形式送出了

kevin  16:34:21

還有一個問題就是 我在frame裡面 送出時做了很多的驗證 用jquery做的。如果用extjs的ajax是不是失效了。重新寫驗證呢

超児ゼ寶寶  16:34:18

這裡的參數的話  能用ext擷取就用ext擷取  不能話就用js的來擷取就行了

超児ゼ寶寶  16:36:18

沒影響的啊   jquery和ext可以一起混用的啊

kevin  16:37:02

恩。那我試一下。

超児ゼ寶寶  16:39:47

嗎的  網不好  老掉

kevin  16:40:24

嘿嘿。我這邊還行。

超児ゼ寶寶  16:40:47

最近越來越差了   糾結啊

kevin  16:41:57

關于extjs使用iframe:關閉的方法

kevin  17:03:50

關于extjs使用iframe:關閉的方法

 嘿嘿。有個告訴我一個方法 

用 全局 window.postWindow =

然後  parent.postWindow.close();

kevin  17:04:52

關于extjs使用iframe:關閉的方法

 是不是又掉線了。嘿嘿     ==================== self-center  16:34:32

簡單

kevin  16:35:40

嘿嘿。請教了

self-center  16:35:42

在這個頁面 彈出成功 後加入 parent.yourWinHandle.close();

最好在window這層寫一個通過的方法.

self-center  16:36:45

如   System.getWindow({....}).show();

System.getActivityWindow().close();之類的.

kevin  16:37:11

我彈出的成功的 是在控制器裡面寫的  echo "<script>alert('生成成功');window.history.go(-1)</script>";

self-center  16:37:20

一樣.

<script>parent.視窗變量.close();

</script>

kevin  16:38:02

那我試一下。嘿嘿 好的。 我試一下

self-center  16:38:13

你的做法有點像  送出

完了關閉 目前window

kevin  16:38:55

是的。

sc-110  16:41:43

好了回應一下.

kevin  16:41:47

關于extjs使用iframe:關閉的方法

好像不行

我說一下我現在的結構吧

關于extjs使用iframe:關閉的方法

kevin  16:42:51

關于extjs使用iframe:關閉的方法

html:'<iframe scrolling="auto" frame width="100%" height="100%" src=/IdIpXml></iframe>'

$this->db->insert('xml', $data);

echo "<script>alert('生成成功');parent.postWindow.close();</script>";

最後這一段是控制器裡面 如果 插入資料庫成功就 彈出的 

sc-110  16:51:55

當然不行啦.

我說了要 使用統一方法

不然你的視窗引用是局部的.

肯定調用不到啦.

要麼用ID..

kevin  16:52:39

那 應該怎麼解決才合适呢?

sc-110  16:52:45

要麼用全局管理

你們都沒有UI架構層嗎?

都是全散的?

kevin  16:53:23

是哦。比較亂

sc-110  16:53:27

子產品與子產品之間都散落在一起的??

那無語.

子產品 外我們還有一個 context層.

那你子產品與子產品之間怎麼互動??難道沒有??

kevin  16:55:08

剛開始嘗試做東西。目前還沒有呢。

sc-110  16:55:37

那你的項目整體 結構怎麼定的.

子產品與子產品之間肯定都是暴露着的.

關于extjs使用iframe:關閉的方法

kevin  16:56:42

準确的說現在這個都不叫項目

呵呵

sc-110  16:56:54

現在最簡單的解決方法就是   把postWindow的通路級别 提升到window級就OK了.

DEMO

kevin  16:57:37

關于extjs使用iframe:關閉的方法

不懂。太深奧了。呵呵還沒有用過呢。剛學習ext

望指點一下

sc-110  16:57:47

var postWindow改成 window.postWindow

這跟Ext沒關系

kevin  16:58:18

哦。明白了 直接 用;window呀。

那關系還是跟以前一樣?

那關閉還是跟以前一樣?

sc-110  16:58:38

嗯,

定義引用要提升到window域才能被  parent.通路到

kevin  16:59:36

window.postWindow = new Ext.Window({

是這樣吧。

sc-110  16:59:59

 對

但這樣你的子產品就不安全了.

kevin  17:00:15

那 下面顯示 的話是 直接使用 window.postWindow.show  還是 postwindow.show

sc-110  17:00:24

都可以.

window在本域下可以省略

kevin  17:00:49

不安全在那裡?會被其它人入侵?嘿嘿

sc-110  17:01:42

var win = {a:1};//window域

function(){

//函數内部域

win.a++;//相于window.win.a++;

}

kevin  17:01:42

你太牛了。 的确 消失了

關于extjs使用iframe:關閉的方法

sc-110  17:02:02

安全性指 開發上的

不是指黑毛客的.

如果在多子產品開發或多人開發中...window域(全局域)變量多了會混亂.

sc-110  17:03:04

導購變量沖突

kevin  17:03:06

哦。明白了。

相當于你說的全局變量了。

sc-110  17:03:20

這個安全就相當于記憶體安全

kevin  17:03:35

對哦。學習了。呵呵

kevin  17:06:06

關于extjs使用iframe:關閉的方法
關于extjs使用iframe:關閉的方法
關于extjs使用iframe:關閉的方法

 謝了 兄弟 

轉載于:https://www.cnblogs.com/holyes/archive/2012/06/26/b3b316d8ffe906f0cb07fa416a822d46.html