[英]Windows Sidebar gadget - cannont access a div in Flyout DOM
在主要小工具html中,有一個帶有onclick的div,它在小工具腳本文件中調用此方法:
ShowFlyout = function()
{
System.Gadget.Flyout.show = true;
var flyoutDoc = System.Gadget.Flyout.document;
var mainFlyoutDiv = flyoutDoc.getElementById('divFlyout');
mainFlyoutDiv.innerHTML = "hello";
}
這是Flyout html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>This is a flyout</title>
<link href="Css\FlyoutStyle.css" type="text/css" rel="Stylesheet" />
</head>
<body>
<div id="divFlyout" >
</div>
</body>
</html>
問題在於mainFlyoutDiv始終為null。 通過調試器查看System.Gadget.Flyout.document對象時,body參數為null-我認為這是不對的。 首次加載小工具時,System.Gadget.Flyout.file值將在其他位置設置。
我究竟做錯了什么?
另外,在可以訪問System.Gadget.Flyout.document屬性之前,System.Gadget.Flyout.show屬性是否必須為true? 我的最終目標是打開彈出窗口並動態填充html
這里的問題是彈出控件是異步加載的(因為這是一個全新的窗口)。 線
var mainFlyoutDiv = flyoutDoc.getElementById('divFlyout');
是在Flyout文檔完成解析之前執行的,這就是為什么它為null的原因-該元素尚不存在。 有幾個選項供您選擇,我最喜歡的是這樣的:
ShowFlyout = function()
{
System.Gadget.Flyout.show = true;
var flyoutWin = System.Gadget.Flyout.document.parentWindow;
flyoutWin.myCustomVar = "Hello";
}
在彈出的HTML中,添加具有以下代碼的腳本:
window.onload = function ()
{
document.getElementById("divFlyout").innerHTML = myCustomVar;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.