0

Chrome 23.0.1271.97を使用して、jQueryを使用してJavascriptで開発しています。私はフレックスを持ってい<object>ます、HTMLは次のとおりです:

<div id="chartdiv" style="display:none;">
<object type="application/x-shockwave-flash" id="barchart" data="barchart.swf" style="width:100%;height:100%;">
<param name="movie" value="barchart.swf" />
<param name="quality" value="high" />
<param name="allowScriptAccess" value="always" />
<param name="wmode" value="transparent" />
</object>
</div>

divは通常非表示ですが、オブジェクトはとにかくonLoadで初期化されます。ただし、アプリが読み込まれると、このdivが表示され、すべてが機能します。問題は、その時点から再び非表示になり(初期化されていないよう$div.hide()に非表示になり、後で再表示された場合)、Flexオブジェクトメソッドにアクセスできないことです。

取得しObject #<HTMLObjectElement> has no method 'blah'ます。変更されたようですが、何が原因かわかりません。

では、何が変わったのでしょうか。良い質問。ロードが成功すると、オブジェクトは機能し、コンソールでは次のようになります。

<object type=​"application/​x-shockwave-flash" id=​"barchart" data=​"barchart.swf" style=​"width:​100%;​height:​100%;​">​
</object>​

試行が失敗した場合(表示、非表示、および戻った後)、オブジェクトは次のようになります。

<object type=​"application/​x-shockwave-flash" id=​"barchart" data=​"barchart.swf" style=​"width:​100%;​height:​100%;​">​
<param name=​"movie" value=​"barchart.swf">​
<param name=​"quality" value=​"high">​
<param name=​"allowScriptAccess" value=​"always">​
<param name=​"wmode" value=​"transparent">​
</object>​

それは私が間違った場所を探しているのかもしれません。フロントエンドのJavascriptコードをステップ実行しましたが、jQueryを介してオブジェクトを非表示にする以外に、オブジェクトを変更するための呼び出しはないようです。Flexオブジェクトは表示されているかどうかわからないと言われています。コードを確認する前に、正しい方向に進んでいることを確認したいと思います。

4

3 に答える 3

1

これは既知の問題です。フラッシュオブジェクトをリセットしたくない場合の最善の解決策の1つは、そのサイズを数ピクセルに設定することです。これは、ユーザーには表示されませんが、ブラウザには「表示」されます。

于 2012-12-18T16:57:47.033 に答える
1

オブジェクトがまだ実行可能であるように、画面の外に移動します。この記事の例を参照してください: jqueryは、フラッシュを含むdivをリセットせずに非表示にします

于 2013-11-16T00:37:40.353 に答える
0

私は検索してきましたが、非表示にするとフラッシュオブジェクトがリセットされるようです。

したがって、私の解決策は、jQuery / DOMオブジェクトをテストし、メソッドが定義されているかどうかを確認することです。

function isFlashWorking()
{
    return ($chart && chart.blah)
}

blahオブジェクト内の既知のメソッドはどこにありますか。

于 2012-12-18T16:14:01.120 に答える