从单独的窗口访问JavaScript对象

时间:2012-05-04 21:33:27

标签: javascript html5

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

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

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

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

2 个答案:

答案 0 :(得分:2)

只看了一眼fullCalendar代码......但一般来说,尝试如何:

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

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

然后从打开的窗口开始:

window.opener.doRefetchEvents();

另见window.opener on MDN

答案 1 :(得分:0)

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