1

メインのガジェット html には、ガジェット スクリプト ファイルでこのメソッドを呼び出す onclick を含む div があります。

ShowFlyout = function() 
{
    System.Gadget.Flyout.show = true;
    var flyoutDoc = System.Gadget.Flyout.document;
    var mainFlyoutDiv = flyoutDoc.getElementById('divFlyout');
    mainFlyoutDiv.innerHTML = "hello";
}

フライアウト 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 に動的に入力することです

4

1 に答える 1

0

ここでの問題は、フライアウトが非同期で読み込まれることです (まったく新しいウィンドウであるため)。この線

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;
}
于 2010-03-12T00:13:36.917 に答える