2012-05-04 215 views
1

我目前使用fullCalendar.js作爲我的Web應用程序的一部分。從單獨窗口訪問JavaScript對象

單擊日曆日期時,會彈出一個窗口,允許用戶輸入有關日曆事件的詳細信息並將其保存。

我希望能夠從打開的窗口中觸發日曆對象中的函數。

Javascript有能力解決單獨窗口中的對象嗎?

我已經嘗試了很多方式從不同的窗口訪問fullCalendar()對象,但都沒有工作。

東西一樣 $(window.opener.document.body).find('#calendar').fullCalendar('refetchEvents');

具體我針對的refetchEvents鉤。

沒有這樣的事情,或者它的任何變體迄今爲止工作過......有很多方法可以處理對象,但沒有一種方法可以在單獨的文檔中引用「實例」。

這是怎麼回事?

是否無法從單獨的窗口中引用我的日曆對象?

真的很欣賞指針。

編輯------------------

我只是試着:

console.log(window.opener.calendar.fullCalendar())

這將產生一個有前途的結果,它的發現該函數,不幸的是現在所有的內部引用都搞亂了。

Uncaught TypeError: Cannot read property 'eventSources' of undefined 
m.fn.fullCalendar:8888/js/fullcalendar/fullcalendar.min.js:110 
$.ajax.successhlc.js:892 
f.Callbacks.ojquery-1.7.2.min.js:2 
f.Callbacks.p.fireWithjquery-1.7.2.min.js:2 
wjquery-1.7.2.min.js:4 
f.support.ajax.f.ajaxTransport.send.d 

除此之外,目前爲止沒有變化。現在實現一個新功能。

還是應對全球var calendar

+0

它是彈出的窗口還是div? – mplungjan

+0

這是一個窗口...... div不會有任何問題,因爲它是相同的文檔。我想保持窗口彈出,因爲這個應用程序運行良好。 – Alex

+0

綁定問題? '的console.log(window.opener.calendar.fullCalendar.bind(window.opener.calendar)())'; –

回答

2

已在fullCalendar代碼只是短短的一瞥......但總體來講怎麼樣努力:

在打開的窗口中定義(window.opener)函數

function doRefetchEvents() { 
    alert("ok"); 
    $("#calendar").fullCalender("refetchEvents"); 
} 

然後從打開的窗口打開:

window.opener.doRefetchEvents(); 

又見window.opener on MDN

+0

我先試試這個......謝謝。 – Alex

+0

我試過這個,但不幸的是它回到未定義或作爲空對象引用。好主意,但。 – Alex

+0

您是否嘗試過使用相同的腳本加載兩個窗口? – Alex

0

您可以嘗試通過字符串化它的日曆對象存儲在localStorage的(https://developer.mozilla.org/en/DOM/Storage#localStorage)(HTTP://www.json .org/js.html - > JSON.stringify),然後在另一個窗口通過JSON.parse解析它來訪問該對象。

+0

只是提及(正如我看了一些問題):這不會工作,因爲JSON.stringify實際上沒有與功能,但刪除...我認爲這甚至在規範中提到。另請參閱[此處](https://developer.mozilla.org/zh/JavaScript/Reference/Global_Objects/JSON/stringify)一節「描述」 - 如果在轉換期間未定義,函數或XML值遇到省略或審查爲空 –