FirefoxでUpdatePanel内の画像が機能しない
-
03-07-2019 - |
質問
Ajax UpdatePanel内で自動的に生成される画像があります。この画像は、サーバー側のコードから生成されたグラフです。 Googleで検索したところ、FFのバグであることがわかりました。誰にも解決策がありますか?
ソースは次のとおりです(不要なタグも含まれています。コピーアンドペーストしました)
<div>
<asp:UpdatePanel ID="UpdatePanelGraph" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Panel ID="pnlGraph" runat="server" CssClass="container">
<div id="chart">
<Web:ChartControl ID="chartExchange" runat="server" Width="300px" Height="200px" BorderStyle="None" GridLines="both" DefaultImageUrl="../images/noData.png" ShowTitlesOnBackground="False" BorderWidth="1px" Padding="1" HasChartLegend="False" BottomChartPadding="20" TopChartPadding="5" RightChartPadding="5" LeftChartPadding="20">
<Border Color="211, 224, 242"></Border>
<YAxisFont ForeColor="115, 138, 156" Font="Tahoma, 7pt" StringFormat="Far,Center,Character,LineLimit"></YAxisFont>
<XTitle ForeColor="115, 138, 156" StringFormat="Center,Near,Character,LineLimit">
</XTitle>
<XAxisFont ForeColor="115, 138, 156" StringFormat="Near,Near,Character,NoClip"></XAxisFont>
<Background Type="LinearGradient" Color="#C9DEFD" ForeColor="Transparent" EndPoint="500, 500">
</Background>
<ChartTitle ForeColor="51, 51, 51" Font="Verdana, 9pt, style=Bold" StringFormat="Near,Near,Character,LineLimit">
</ChartTitle>
<Charts>
<Web:SmoothLineChart Name="buy" Legend="Blen">
<Line Color="ActiveCaption"></Line>
<DataLabels>
<Border Color="Transparent"></Border>
<Background Color="Transparent"></Background>
</DataLabels>
</Web:SmoothLineChart>
<Web:ColumnChart Name="avgChart">
</Web:ColumnChart>
</Charts>
<YTitle ForeColor="115, 138, 156" StringFormat="Center,Near,Word,LineLimit"></YTitle>
</Web:ChartControl>
</div>
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
</div>
解決 2
また、これは良い解決策ではありません。キャッシュ可能性をnocacheに設定すると、問題が解決しました。私はこれを私のページロードで心配しています
Response.Cache.SetCacheability(HttpCacheability.NoCache);
このコードを設定することでも機能します
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_pageLoaded(pageLoaded);
var c = 0;
function pageLoaded(sender, args)
{
var img = document.getElementById("ctl00_ctl00_MainContent_MainContent_chartExchange");
c++;
img.src = img.src + "?" + c;
}
</script>
他のヒント
使用している.NETのバージョンは何ですか? 3.5フレームワークには、新しいグラフ作成コントロールがあります。私はそれで遊んで数日を過ごし、それがどれほど強力であるかに驚いた。また、UpdatePanelsでも問題なく使用しました。
とにかく、FFまたはIEで同じ問題が発生するはずです。
お使いのアップデートパネルに気づいた
UpdateMode="Conditional"
ただし、トリガーを指定しません。つまり、更新パネルのコンテンツは、表示されていない更新パネル内のボタン以外によってトリガーされることはありません。デバッグのためにUpdateModeをAlwaysに変更してみて、問題が解決するかどうかを確認し、そこから適切なトリガーを実行します。
編集:
グラフィック名/ファイル名を作成してブラウザにレンダリングする方法を制御できますか?ブラウザで画像をキャッシュできますか? AJAX呼び出しを使用したJava / JSPでのグラフのパッキングに問題がありました。キャッシュの問題を修正するには、AJAX urlクエリ文字列変数にGUIDを追加する必要がありました。
FireBug で掘り下げた結果、120 Dit&#を選択してもまったく同じ画像URLが返されることがわかりました。 235;または30 Dit&#235;またはメサレット。チャートコントロールは、背後のデータが変更された場合でも、同じ画像URLを返しているようです。コントロールのバグのように聞こえます。
WebChartsディレクトリのweb.configを使用して、そこから提供される画像のキャッシュ可能性を設定し、キャッシュされないようにすることができます。