1

我目前正在使用fullCalendar.js作为我的 Web 应用程序的一部分。

单击日历日期时,会弹出一个窗口,允许用户输入有关日历事件的详细信息并保存它们。

我希望能够从打开的窗口中触发日历对象中的函数。

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

4

2 回答 2

2

只看了一眼完整的日历代码......但一般来说尝试一下如何:

在打开的窗口 ( window.opener) 中定义一个函数

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

然后从打开的窗口中:

window.opener.doRefetchEvents();

另见MDN 上的 window.opener

于 2012-05-04T22:28:28.100 回答
0

您可以尝试通过字符串化(http://www.json.org/js.html -> JSON)将日历对象存储在 localStorage(https://developer.mozilla.org/en/DOM/Storage#localStorage)中.stringify),然后在另一个窗口中通过使用 JSON.parse 解析来访问对象。

于 2012-05-04T22:35:03.940 回答