Ошибка возникает, когда окно «родитель» из сценария (т.е. закрыто), но ссылается на скрипт, который все еще удерживается (например, в другом окне). Несмотря на то, что «объект» все еще жив, контекст, в котором он хочет выполнить, не является.
Это несколько грязного, но это работает на мой Windows Sidebar Gadget:
Вот общая идея: «основному» окно устанавливает функцию, которая будет eval'uate некоторого кода, да, это так некрасиво , Затем «ребенок» может вызвать эту «функцию-строитель» (которая связана с областью основного окна /) и возвращает функцию, которая также привязана к «главному» окну. Очевидным недостатком, конечно, является то, что функция, «отскок», не может закрываться над областью, в которой она, по-видимому, определена в ... во всяком случае, достаточно гибкости:
Это частично псевдокод, но я использовать вариант этого на боковой панели Windows Gadget (Я все это говорю, потому что Sidebar Gadgets работать в «неограниченной зоне 0», что может - или не может -. изменить сценарий значительно)
// This has to be setup from the main window, not a child/etc!
mainWindow.functionBuilder = function (func, args) {
// trim the name, if any
var funcStr = ("" + func).replace(/^function\s+[^\s(]+\s*\(/, "function (")
try {
var rebuilt
eval("rebuilt = (" + funcStr + ")")
return rebuilt(args)
} catch (e) {
alert("oops! " + e.message)
}
}
// then in the child, as an example
// as stated above, even though function (args) looks like it's
// a closure in the child scope, IT IS NOT. There you go :)
var x = {blerg: 2}
functionInMainWindowContenxt = mainWindow.functionBuilder(function (args) {
// in here args is in the bound scope -- have at the child objects! :-/
function fn (blah) {
return blah * args.blerg
}
return fn
}, x)
x.blerg = 7
functionInMainWindowContext(6) // -> 42 if I did my math right
Как вариант, главное окно должно иметь возможность передать функцию functionBuilder дочернему окну - до тех пор, пока функция mainBuilder определена в контексте главного окна!
Я чувствую, что использовал слишком много слов. YMMV.
, я только что получил ошибку без любые метатеги на моей странице – 2012-09-27 11:22:22