SpreadJSは、スクリーンリーダーなどのアクセシビリティサポートを提供します。アプリケーションの開発者はアクセシビリティサポートを使用して、エンドユーザーエクスペリエンスをより高めることができます。
Webページのテキストコンテンツには、次の方法でアクセスできます。
スクリーンリーダーで読み上げられるテキストをより意味のあるものにするために、さまざまなケースでさまざまなテキストが使用されます。
ケース | スクリーンリーダーで読み上げられるテキスト |
---|---|
セル(0、1)は、Tabキーを押すとアクティブセルになり、その値は「名前」です。 | セル(0、1)の値は「名前」です。 |
マウスがビューポート領域のセル(0、1)に入り、その値は「名前」です。 | セル(0、1)の値は「名前」です。 |
マウスが列ヘッダ領域のセル(0、1)に入り、その値は「名前」です。 | 列ヘッダのセル(0、1)の値は「名前」です。 |
マウスが行ヘッダ領域にセル(1、0)を入力し、その値は「名前」です。 | 行ヘッダのセル(1、0)の値は「名前」です。 |
マウスがタブストリップのサイズ変更バーに入ります。 | タブストリップのリサイズ |
マウスがタブストリップの最初の領域に入ります。 | タブストリップの先頭 |
マウスがタブストリップの前の矢印領域に入ります。 | 前への矢印ボタン |
マウスがタブストリップの次の矢印領域に入ります。 | 次への矢印ボタン |
マウスがタブストリップの最後の領域に入ります。 | タブストリップの最後 |
マウスがタブストリップの前のボタン領域に入ります。 | 前へのボタン |
マウスがタブストリップの次のボタン領域に入ります。 | 次へのボタン |
マウスがタブストリップのシートタブ領域に入り、その名前は「Sheet1」です。 | シートタブ「Sheet1」 |
マウスがタブストリップの新しいシート領域に入ります。 | 新しいシート |
マウスがタブストリップの空白の領域に入ります。 | タブストリップのブランク領域 |
マウスが水平スクロールバーの左ボタン領域に入ります。 | スクロールバーの左ボタン |
マウスが垂直スクロールバーの上部のボタン領域に入ります。 | スクロールバーの上ボタン |
マウスがスクロールバーのサムボタン領域に入ります。 | スクロールバーのサム |
マウスが水平スクロールバーの右ボタン領域に入ります。 | スクロールバーの右ボタン |
マウスは、垂直スクロールバーの下部のボタン領域に入ります。 | スクロールバーの下ボタン |
サンプルページがアクティブタブにあり、アクティブセルはCell(0、1)で、その値は「名前」です。 | セル(0、1)の値は「名前」です。 |
アクセシビリティサポートは、Windowsナレーター、Windows用のNVDA(NonVisual Desktop Access)、Mac OS X用のVoiceOverなどの画面読み上げアプリケーションで使用できます。「Tabキーを押す」、「マウスホバー」、および「アクティブなタブのページ」などの機能は、使用するスクリーンリーダーとブラウザの種類によって動作が異なります。
次の表は、さまざまなブラウザでスクリーンリーダーの結果を示します。
スクリーンリーダー | ブラウザ |
Tabキーを押す |
マウスホバー | アクティブなタブでのページ |
Windows用のNVDA | Chrome | サポートされる | サポートされる | サポートされる |
Windows用のNVDA | Firefox | サポートされる | サポートされる | サポートされていない |
Windows用のNVDA | Chromium Edge | サポートされる | サポートされる | サポートされていない |
Windows用のNVDA | Edge | サポートされていない | サポートされていない | サポートされていない |
Windows用のNVDA | IE | サポートされていない | サポートされていない | サポートされていない |
Windowsナレーター | Chrome | サポートされる | サポートされる | サポートされていない |
Windowsナレーター | Firefox | サポートされる | サポートされる | サポートされていない |
Windowsナレーター | Chromium Edge | サポートされる | サポートされる | サポートされていない |
Windowsナレーター | Edge | サポートされる | サポートされていない | サポートされていない |
Windowsナレーター | IE | サポートされる | サポートされていない | サポートされていない |
Mac OS X用のVoiceOver | Chrome | 制限付きでサポートされる | 制限付きでサポートされる | サポートされていない |
Mac OS X用のVoiceOver | Safari | 制限付きでサポートされる | 制限付きでサポートされる | サポートされていない |
アクセシビリティサポートを有効にする、enableAccessibilityプロパティをTrueに設定します。
次のサンプルコードは、アクセシビリティサポートを有効にします。
JavaScript |
コードのコピー
|
---|---|
spread.options.enableAccessibility = true;
|
SpreadJSは、フローティングオブジェクト、画像、チャート、図形などのグラフィックコンテンツに対して、適切な代替テキストを提供しません。ただし、Picture、FloatingObject、ConnectorShape、GroupShape、Shape、およびChartクラスのaltメソッドを使用して、アクセシビリティサポートのために代替テキストを提供できます。
次のサンプルコードは、画像、図形、チャートの代替テキストを設定します。
JavaScript |
コードのコピー
|
---|---|
<script> $(document).ready(function () { // Spreadを初期化します。 var spread = new GC.Spread.Sheets.Workbook(document.getElementById('ss'), { sheetCount: 2 }); // アクティブシートを取得します。 var sheet = spread.getSheet(0); // アクセシビリティを有効にします。 spread.options.enableAccessibility = true; spread.suspendPaint(); // フォーカスを設定します。 spread.focus(); // Tabキー、Shift+Tabキーに関連するコマンドを変更します。 var commands = spread.commandManager(); // TAB commands.register("moveToNextCellThenControl", GC.Spread.Sheets.Commands.moveToNextCellThenControl, GC.Spread.Commands.Key.tab, false, false, false, false); // SHIFT+TAB commands.register("moveToPreviousCellThenControl", GC.Spread.Sheets.Commands.moveToPreviousCellThenControl, GC.Spread.Commands.Key.tab, false, true, false, false); // デフォルトの行の高さと列の幅を設定します。 sheet.defaults.rowHeight = 50; sheet.defaults.colWidth = 150; // デフォルトの水平方向と垂直方向の配置を設定します。 var defaultStyle = sheet.getDefaultStyle(); defaultStyle.hAlign = GC.Spread.Sheets.HorizontalAlign.center; defaultStyle.vAlign = GC.Spread.Sheets.VerticalAlign.center; defaultStyle.rowHeight = 50; defaultStyle.colWidth = 150; sheet.setDefaultStyle(defaultStyle); // データソースをバインドします。 sheet.setDataSource(dataSource); // Sheet1を取得します。 var sheet = spread.getSheet(1); // チャートのデータを準備します。 sheet.setValue(0, 1, "Q1"); sheet.setValue(0, 2, "Q2"); sheet.setValue(0, 3, "Q3"); sheet.setValue(1, 0, "Mobile Phones"); sheet.setValue(2, 0, "Laptops"); sheet.setValue(3, 0, "Tablets"); for (var r = 1; r <= 3; r++) { for (var c = 1; c <= 3; c++) { sheet.setValue(r, c, parseInt(Math.random() * 100)); } } // columnClusteredチャートを追加します。 var c1 = chart_columnClustered = sheet.charts.add('chart_columnClustered', GC.Spread.Sheets.Charts.ChartType.columnClustered, 50, 300, 300, 300, "A1:D4"); c1.alt("This is a column chart"); var chartArea = c1.chartArea(); chartArea.border.color = "rgba(20, 119, 167, 1)"; chartArea.border.width = 2; c1.chartArea(chartArea); // 画像を追加します。 var p1 = sheet.pictures.add("p1", "mango.jpg", 500, 50, 200, 200); p1.alt("これはマンゴーの画像です。"); p1.borderColor("rgba(20, 119, 167, 1)"); p1.borderWidth(2); p1.borderStyle("solid"); // 雲のシェイプを追加します。 var sp1 = sheet.shapes.add("sp1", GC.Spread.Sheets.Shapes.AutoShapeType.cloud, 250, 50, 200, 200); sp1.alt("これは雲のシェイプです。"); spread.resumePaint(); // イベントをバインドして代替テキストを設定します。 function setAltText(collection, altText) { var success = false; collection.forEach(function (obj) { if (obj.isSelected()) { obj.alt(altText); success = true; } }); return success; } var alternativeText = document.getElementById("alternativeText"); document.getElementById("setAlternativeText").addEventListener("click", function () { var altText = alternativeText.value; var success = setAltText(sheet.pictures.all(), altText); if (success) { return; } success = setAltText(sheet.charts.all(), altText); if (success) { return; } setAltText(sheet.shapes.all(), altText); }); spread.bind(GC.Spread.Sheets.Events.PictureChanged, function (event, args) { if (args.propertyName === "isSelected" && args.picture.isSelected()) { alternativeText.value = args.picture.alt(); } }); spread.bind(GC.Spread.Sheets.Events.FloatingObjectChanged, function (event, args) { var floatingObject = args.floatingObject; if (floatingObject && floatingObject instanceof GC.Spread.Sheets.Charts.Chart) { if (args.propertyName === "isSelected" && floatingObject.isSelected()) { alternativeText.value = floatingObject.alt(); } } }); spread.bind(GC.Spread.Sheets.Events.ShapeChanged, function (event, args) { if (args.propertyName === "isSelected" && args.shape.isSelected()) { alternativeText.value = args.shape.alt(); } }); }); </script> |