CSSを利用した非表示/表示設定を行うと、スクリプトエラーが発生する

文書番号 : 39513     文書種別 : 不具合     登録日 : 2016/08/04     最終更新日 : 2016/09/09
文書を印刷する
対象製品
SPREAD for ASP.NET 8.0J
発生環境
Internet Explorer 8
状況
修正済み
詳細
下記の再現手順で説明されるようなCSSを利用した非表示/表示設定を行うと、Internet Explorer 8上でスクリプトエラーが発生します。

【再現手順】
1.新規WebフォームにSPREADを配置し、下記の再現コードを貼り付けプロジェクトを起動する
2.IE8環境から上記プロジェクトのページにアクセスする
3.SPREAD上のボタンを押下する
--- スクリプトエラーが発生する

【再現コード】
------------------------------------
.aspxファイル
------------------------------------
下記のようにスタイルを設定します
<style type="text/css">
  .hideSpread {
    visibility: hidden;
  }
</style>

------------------------------------
クライアント側スクリプト
------------------------------------
<script type="text/javascript">
  document.onreadystatechange = function () {
    if (document.readyState == 'complete') {
      var spread = document.getElementById('FpSpread1');
      spread.style.visibility = "visible";
    }
  }
</script>

------------------------------------
Webフォームクラス
------------------------------------
Public Class WebForm1
  Inherits System.Web.UI.Page

  Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Page.IsPostBack Then Return
    FpSpread1.CssClass = "hideSpread"
    FpSpread1.ActiveSheetView.Columns(0).CellType = New FarPoint.Web.Spread.ButtonCellType()
  End Sub
End Class
回避方法
Service Pack 3(v8.0.4004.2010)で修正済み。
Service Pack 3(v8.0.4004.2010)より前のバージョンでは次の回避方法が有効です。
------------------------------------------

スタイルシートを使用して、SPREADの表示位置をブラウザの外側に設定することで、SPREADを非表示にした場合と同様の処理結果を得ることが可能です。

【回避コード】
<style type="text/css">
  .hideSpread {
   position: relative;
   left: -5000px;
  }
</style>
<script type="text/javascript">
  document.onreadystatechange = function () {
    if (document.readyState == 'complete') {
      var spread = document.getElementById('FpSpread1');
      spread.className = "";
    }
  }
</script>