看板 Ajax 關於我們 聯絡資訊
有一些callback的概念一直搞不清 雖然有點像是scope的概念,但好像又不屬於scope的範籌。 因為我要寫的又牽涉到不同視窗之間的"領域"。 拿具體一點的例子來說 有兩個分別叫TW和JP的視窗,裡面都有個<div id='country'></div>。 TW下是 <div id="country">TAIPEI</div> JP下是 <div id="country">TOKYO</div> 今天如果TW派了一個人到JP去(TW下開一個視窗JP) 然後用叫他在JP用callback的方式 去取得 #country的值 TW function callback(callback){ if ($.isfunction(callback) callback(); } JP parent.callback(function (){ alert($("#country").text()); }) 我試過的結果是 TOKYO 所以callback是會先在JP裡,把JQuery的東西先轉換好成為變數再搬到TW下裡執行 $("#country")是實體的物件、而不是變數所以不會牽涉到scope? 而不是我原先所想的,把整套function搬到TW來執行, 然後再TW的情境下去把$("#country")物件化。 類似eval()那樣.. 是這樣嗎? 這種情況下似乎也不能用$.proxy()來解決嘛? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.193.42
sk1765:這是closure 所以JP呼叫parent.callback傳進去的 09/28 20:59
sk1765:function (){ alert($("#country").text()); }) 09/28 21:00
sk1765:是在JP的scope下 所以引用到的是 JP的window.document 09/28 21:02
sk1765:$("#country")的內容是從window.document.getElementById來 09/28 21:06
sk1765:的 所以會得到JP的document 09/28 21:08
sk1765:另外你打算用$.proxy解決什麼? 你是打算得到TW的答案嗎? 09/28 21:21
JYHuang:嗯..我的想法是在子視窗的script處理父視窗的元件 09/29 00:11
TonyQ:我不太懂你問題的描述.. 09/29 00:55
TonyQ:這個視窗是window,還是單純的不同 div 作 popup效果而已? 09/29 00:56
JYHuang:真的popup視窗 or iframe 09/29 07:14
sk1765:function (){ 09/29 11:48
sk1765: alert($("#country",parent.document).text()); 09/29 11:49
sk1765:}) 改成這樣就好了吧 $()可以指定用哪個document 09/29 11:50
ChowMein:呼叫函式是把控制權轉移給它, 09/29 12:38
ChowMein:不是拉過來執行, 是跳過去, 完成再跳回來, 09/29 12:38
ChowMein:而函式執行時是在自己的context之中 09/29 12:38
b12031106:試試HTML5的postMessage? 09/29 13:08