0
플라이어에 문제가 있습니다. 제 가젯은 구성 요소를 두 번 클릭하면 해당 플라이 아웃 창이 나타납니다. 그러나 플라이 아웃이 포함 된 시각적 구성 요소를 두 번 클릭하면 플라이 아웃 문서가 null로 반환됩니다. 왜 그런지 모르겠지만 플라이 아웃을 떠나서 다시 열거 나 새로 열면 괜찮습니다. 플라이 아웃이 이미 열려있는 경우에만 발생합니다. 나는 이것이 왜 있는지에 대한 몇 가지 아이디어를 찾고 있습니다.Windows 7 가젯 플라이 아웃 질문
더블 클릭 코드 :
Blah.prototype.ondblclick = function()
{
var me = this.parent;
if (System.Gadget.Flyout.show)
{
// flyout is already shown, make sure it shows our stuff
System.Gadget.Flyout.file = FLYOUT_FILE;
onFlyoutShow();
}
else
{
System.Gadget.Flyout.file = FLYOUT_FILE;
System.Gadget.Flyout.onShow = onFlyoutShow;
System.Gadget.Flyout.show = true;
}
System.Gadget.Flyout.onHide = onFlyoutHide;
function onFlyoutShow()
{
me.flyoutOpen = true;
me.updateFlyout();
}
function onFlyoutHide()
{
me.flyoutOpen = false;
}
};
실행 된 코드 :
Blah.prototype.updateFlyout = function()
{
var flyoutDoc = System.Gadget.Flyout.document;
//flyoutDoc is null at this point
var info = flyoutDoc.getElementById("info");
info.innerHTML = "info: " + this.information;
//Error thrown: 'null' is null or not an object
}
글쎄요, 타이밍 문제로 문제가 해결되었습니다. setTimeout이 문제를 해결했습니다. 이제 내가 "옳은"방식으로 할 수 있는지의 문제입니다. 지금은 +1. – user535617
나는 올바른 방법이 있다고 확신하지 못합니다. System.Gadget.Flyout (http://msdn.microsoft.com/en-us/library/ms723669(v=vs.85).aspx)에 대한 설명서는 더 이상 이벤트를 나열하지 않습니다. 시간 제한을 0으로 설정할 수 있으면 얻을 수있는 것과 거의 비슷합니다. – Hemlock
@user, @Hemlock : 가장 좋은 방법은 콜백 시스템을 사용하는 것입니다. 가젯의 코드는 함수를 정의하고 플라이 아웃의 JavaScript 코드가 실행될 때 가젯 윈도우의 함수를 호출하여 비즈니스를 올바르게 수행 할 수 있도록합니다. 요소가 실행되기 전에 타이머가 지연되거나 시간이 실행되기 전에로드에서 플라이 아웃이 지연 될 수 있으므로 타이머가 안정적이지 않을 수 있습니다. –