簡體   English   中英

Windows邊欄小工具-無法訪問Flyout DOM中的div

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM