Re: [問題] thickbox + form

看板Web_Design作者 (潑潑)時間16年前 (2010/01/13 21:15), 編輯推噓2(2062)
留言64則, 3人參與, 最新討論串2/2 (看更多)
從原文衍生一個問題,我想在關閉ThickBox之後讓母網頁reload 該怎麼做呢? 是要從ThickBox的網頁下指令還是在母網頁下指令呢? ※ 引述《awkman (歐克麵)》之銘言: : 我的A網頁上有一個"新增"功能 : 點選此連結後是用thickbox : 開啟一個B網頁 裡面有個form : 我要做的效果是把form submit後 : thickbox視窗(B網頁)會自動關閉 : 我試過把form中的action設為指向A網頁 : 但是會變成thickbox中出現A網頁.. : 而不是關閉thickbox後回到正常的A網頁 : 不知道該怎麼修改XD : 打的有點小亂 希望有人看的懂... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.170.9.77

01/13 21:20, , 1F
iframe mode 還是 ajax mode ? 這個會影響到答案.
01/13 21:20, 1F

01/13 21:21, , 2F
不過基本上應該是都可以從母網頁去找到對應的事件來處理。
01/13 21:21, 2F

01/13 21:46, , 3F

01/13 21:46, , 4F
我用這個網頁的 運用一 的方法 開啟視窗
01/13 21:46, 4F

01/13 21:50, , 5F
這是iframe mode , 你可以從子網頁call parent的window ,
01/13 21:50, 5F

01/13 21:53, , 6F
這就是我困擾的地方,因為我學php,js不通
01/13 21:53, 6F

01/13 21:54, , 7F
看了一下原始碼 , $('#TB_window,#TB_overlay,
01/13 21:54, 7F

01/13 21:54, , 8F
,#TB_HideSelect').trigger("unload")
01/13 21:54, 8F

01/13 21:55, , 9F
它好像沒給比較正常的事件綁定option,
01/13 21:55, 9F

01/13 21:56, , 10F
我想想喔,你關掉tb 應該是按右上角的 x ,那就會trigger
01/13 21:56, 10F

01/13 21:57, , 11F
tb_window 的 onload , 你也可以直接修改他原始碼 tb_remove
01/13 21:57, 11F

01/13 21:57, , 12F
的code , 加入 讓網頁重新整理的資料 , 前提是你tb只用這次
01/13 21:57, 12F

01/13 21:57, , 13F
網頁重新整理可以用 self.location = "" + self.location;
01/13 21:57, 13F

01/13 21:58, , 14F
or self.reload(); 兩個用途不太一樣 :3
01/13 21:58, 14F

01/13 22:02, , 15F
我是在ThickBox頁面按下按鈕,做完php to mysql的動作後
01/13 22:02, 15F

01/13 22:03, , 16F
if (mysql語法執行成功) { self.parent.tb_remove(); }
01/13 22:03, 16F

01/13 22:04, , 17F
這樣子我還是要改ThickBox的js檔來達成我文中的效果嗎?
01/13 22:04, 17F

01/13 22:04, , 18F
self.parent.tb_remove(); 是看網頁來的
01/13 22:04, 18F

01/13 22:05, , 19F
這樣啊 , 那你直接透過 self.parent.document.location來改
01/13 22:05, 19F

01/13 22:05, , 20F
母網頁的狀態就好 , 關掉也不用關了 , 反正重新整理就關了
01/13 22:05, 20F

01/13 22:05, , 21F
我剛還想說你不會 js , 應該不會從子網頁來改狀態. :3
01/13 22:05, 21F

01/13 22:06, , 22F
至於 location 怎麼改看我上面 self.location 那段 ,
01/13 22:06, 22F

01/13 22:06, , 23F
只是 self.location 改成 self.parent.document.location
01/13 22:06, 23F

01/13 22:09, , 24F
是在self.parent.tb_remove(); 之前下reload語法嗎?
01/13 22:09, 24F

01/13 22:10, , 25F
好像是,快成功了
01/13 22:10, 25F

01/13 22:12, , 26F
ThinkBox有onclose之類的事件吧,還是那是colorbox
01/13 22:12, 26F

01/13 22:12, , 27F
你把TonyQ給你的程式碼丟給那個事件跑就好了
01/13 22:12, 27F

01/13 22:13, , 28F
成功了,謝謝
01/13 22:13, 28F

01/13 22:13, , 29F
我剛看了一下官方文件是沒看到 , 我記得thickbox 是一個蠻極
01/13 22:13, 29F

01/13 22:14, , 30F
self.parent.tb_remove();之前下self.parent.location.reload
01/13 22:14, 30F

01/13 22:14, , 31F
端的plug-in , 他透過auto-bind 的方式在頁面ready時綁定 ,
01/13 22:14, 31F

01/13 22:14, , 32F
不過因為reload會讓我母網頁的post重送
01/13 22:14, 32F

01/13 22:14, , 33F
但是在我們自己使用 script 去調用或下參數的這一塊就沒有很
01/13 22:14, 33F

01/13 22:15, , 34F
所以改location.href了 謝謝大大
01/13 22:15, 34F

01/13 22:15, , 35F
詳細的資料 . 所以以前我印象中我是自己看 source去調用tb
01/13 22:15, 35F

01/13 22:15, , 36F
show 跟 tb_remove , 並做一些客製化 .
01/13 22:15, 36F

01/13 22:16, , 37F
我剛剛看過原始碼,應該是沒有onclose這類可供綁定的空間,
01/13 22:16, 37F

01/13 22:16, , 38F
除非是修改source , 或者想辦法塞unload 給iframe .
01/13 22:16, 38F

01/13 22:17, , 39F
是啊 , 我剛說得那兩個有不同的用法就在於 post狀態的有無,
01/13 22:17, 39F

01/13 22:17, , 40F
如果需要保留post 的話 reload 比較好 , 反之改href比較好,
01/13 22:17, 40F

01/13 22:50, , 41F
可以額外聊一些別的嗎?
01/13 22:50, 41F

01/13 22:50, , 42F
js這種東西做出來很漂亮也快速方便,但安全性需多一點考量
01/13 22:50, 42F

01/13 22:51, , 43F
如果user把bowser的js關掉,那網站就掛了
01/13 22:51, 43F

01/13 22:52, , 44F
掛了是還好,頂多不能瀏覽。但會不會因為js關掉而發現一堆
01/13 22:52, 44F

01/13 22:52, , 45F
網站上的漏洞?
01/13 22:52, 45F

01/13 22:58, , 46F
所以該準備一個無JS的版本?
01/13 22:58, 46F

01/13 22:58, , 47F
最近很懶的時候,整個佔用js產生內容(類似js template
01/13 22:58, 47F

01/13 22:59, , 48F
他關閉JS內容全部看不到,這樣也是一個解XD
01/13 22:59, 48F

01/14 00:44, , 49F
Qiqi你所謂的「網站上的漏洞,正考驗著網頁的每個表單的
01/14 00:44, 49F

01/14 00:44, , 50F
validation的驗證做的扎不扎實,js只是輔助,用js判斷過得
01/14 00:44, 50F

01/14 00:44, , 51F
東西任何有心人(像是我)都有可能透過user script 或者是
01/14 00:44, 51F

01/14 00:45, , 52F
第三方程式去繞過,每個有關資料安全、狀態一致性的操作都需
01/14 00:45, 52F

01/14 00:45, , 53F
要從伺服器端做檢查,這算是寫網站的基本常識喔。
01/14 00:45, 53F

01/14 18:22, , 54F
因為我個人是用php寫,所以驗證確實都是在伺服器端
01/14 18:22, 54F

01/14 18:23, , 55F
只是因為js讓介面更有親和力,不用每次都reload
01/14 18:23, 55F

01/14 18:24, , 56F
但原本已經寫好的程式碼之中要套一層js即時驗證上去
01/14 18:24, 56F

01/14 18:24, , 57F
讓我搞不懂自己在寫什麼,太混亂了。是我經驗不足的關係嗎?
01/14 18:24, 57F

01/14 18:25, , 58F
且此時後端與前端會有兩次差不多的程式碼,這是正常嗎?
01/14 18:25, 58F

01/14 18:25, , 59F
譬如驗證A,前端驗證一次A,後端驗證一次A。
01/14 18:25, 59F

01/14 21:20, , 60F
這個現象是對的。 因為現在還沒有良好而全面的方案可以用ser
01/14 21:20, 60F

01/14 21:21, , 61F
ver side的驗證(還要考慮到案主、介面及欄位的客制需求)
01/14 21:21, 61F

01/14 21:22, , 62F
來協助client side驗證語法的產生,我自己是把 server的驗證
01/14 21:22, 62F

01/14 21:22, , 63F
介面寫得跟js的介面比較接近,思緒尚可以比較接近一致。
01/14 21:22, 63F

01/15 03:22, , 64F
感謝分享
01/15 03:22, 64F
文章代碼(AID): #1BJSTL4e (Web_Design)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BJSTL4e (Web_Design)