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
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnaugDM4UDO1UTMwEjNyYDMyEDMy8CX2AjMxAjMvw1cllHbvh2Lc12bj91cn9Gbi52YvwVbvNmLzd2bsJmbj5ycldWYtl2Lc9CX6MHc0RHaiojIsJye.jpg)
kevin 16:12:06
是這樣的。嘿嘿 打擾了。
超児ゼ寶寶 16:12:36
你要想什麼時候關閉?
什麼時候關閉就什麼時候調用就行了撒
kevin 16:13:33
我就是想 <iframe 插入的頁面 操作成功時 關系
成功後我用javascript 彈出的
超児ゼ寶寶 16:14:32
現在插入成功沒?
kevin 16:14:37
成功了
超児ゼ寶寶 16:15:28
沒明白你意思 你邏輯有問題 為什麼剛彈出來又要關閉掉?
kevin 16:16:28
看這個例子吧。
紅色部分是 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
kevin 17:03:50
嘿嘿。有個告訴我一個方法
用 全局 window.postWindow =
然後 parent.postWindow.close();
kevin 17:04:52
是不是又掉線了。嘿嘿 ==================== 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
好像不行
我說一下我現在的結構吧
kevin 16:42:51
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
那你的項目整體 結構怎麼定的.
子產品與子產品之間肯定都是暴露着的.
kevin 16:56:42
準确的說現在這個都不叫項目
呵呵
sc-110 16:56:54
現在最簡單的解決方法就是 把postWindow的通路級别 提升到window級就OK了.
DEMO
kevin 16:57:37
不懂。太深奧了。呵呵還沒有用過呢。剛學習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
你太牛了。 的确 消失了
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
謝了 兄弟
轉載于:https://www.cnblogs.com/holyes/archive/2012/06/26/b3b316d8ffe906f0cb07fa416a822d46.html