2013-07-24 54 views
0

我遇到了Windows Mobile 6.5及其隨附的標準IE和我開發的網頁的問題。 在這個網站我有查詢,我有一個回調管理,像這樣:LookUps和回調

window.callbackFunc = VendorLookUp_callback; 
window.open('LookUpVendor.aspx?query=' + encodeURIComponent(query)); 

所以,我定義查找一個回調函數,並打開它。然後,在查找代碼:

window.parent.opener.callbackFunc(document.getElementById('invItmSelected').value); 
window.close(); 

這在Windows Mobile環境下不工作,查找打開,但,然後,回調函數不工作的原因是:

window.parent.opener = undefined 

所以,我不能到達回調函數。我嘗試過:

window.parent.opener 
window.top.opener 
window.opener 
window.parent 
window.top 

但是,我仍然無法得到它的工作。

此網站適用於IE9,IE10,Firefox和Chrome的桌面版本。我也在Firefox和Dolphin for Android上測試了這個功能,並且努力工作。

編輯:我嘗試使用Opera在同一手機上,它不工作。

任何想法?

+0

抓住吸管,但可以直接在'window'對象上訪問嗎?即'window.callbackFunc'。我無法想象爲什麼這會起作用,但移動的Windows IE是荒謬的。 – RobH

+0

是啊,它有點太... – mRt

+0

如果你嘗試'window.prototype.callbackFunc = VendorLookUp_callback;'與'window.opener.callbackFunc'? – K3N

回答

1

解決方法是持有對新查找窗口的引用。觀察查找窗口,看它的加載是否正確,然後執行回撥。

var lookupwin = window.open('LookUpVendor.aspx?query=' + encodeURIComponent(query)); 
lookupInt = window.setInterval(function(){ 
    //check if your lookup window is loaded 
    if(lookupwin.document.getElementById("#some_element_to_check")){ //look for an element or something 
    //if things look good execute your callback 
    VendorLookUp_callback(); 
    window.clearInterval(lookupInt); 
    } 
}, 0);