回答編集履歴

2

言いすぎた感のある記述を取り下げ

2017/11/08 04:22

投稿

miimou
miimou

スコア74

test CHANGED
@@ -142,13 +142,11 @@
142
142
 
143
143
  ### おまけ
144
144
 
145
- こうするのは面倒で、(今ではあまり無いはずでがかつては)メモリリークのリスクなどがあったので、
145
+ こうするのは面倒ですね。
146
-
146
+
147
- 解答欄を問題のついでに書き換わる部分に置くこと一般的ではありません。
147
+ また、解答欄を問題のついでに書き換わる部分に置くようなコードはあ見かけません。
148
-
148
+
149
- 解答欄を出したり消したりしたいならjQueryのhide showなどを使う方がマシでょう(アクセシビリティの観点では(略))
149
+ そこで、解答欄を出したり消したりするのにはjQueryのhide showなどを使う方法を提案てみます
150
-
151
- 例えば以下のように
152
150
 
153
151
  ```html
154
152
 
@@ -246,42 +244,48 @@
246
244
 
247
245
 
248
246
 
247
+ このコードはアクセシビリティ(あらゆる人に使えるようになっているかという点。ここではスクリーンリーダーや点字ディスプレイ利用者、キーボード以外の入力デバイスの利用者など)の観点から言うと良くありません。
248
+
249
+ think49さまの2017/11/08 12:00のコメントにある通り、
250
+
251
+ 問題をHTMLに書いておくか、問題を隠したいならサーバサイドスクリプトなどページ遷移を伴う方法を代替として提供するかするのが良いです。
252
+
253
+
254
+
249
255
  #### 補足
250
256
 
251
257
  think49さまの指摘もあり、確かに説明不足だと思ったので補足します。
252
258
 
253
259
 
254
260
 
255
- > こうするのは面倒で、(今ではあまり無いはずですがかつては)メモリリークのリスクなどがあったので、
261
+ > こうするのは面倒で、
256
262
 
257
263
 
258
264
 
259
265
  イベントハンドラの設定を毎回作り直した要素について行い直すのは、記述の位置がその要素を作った場所になることによって、コールバック地獄を悪化させる恐れがあります。これが「面倒」なことです。
260
266
 
261
- さらに、この際に古い要素のイベントハンドラを外し忘れて、DOMオブジェクトとJavascriptオブジェクトを共に含む循環参照ができてしまうと、メモリリークを起こすという現象が昔のIEではあったと聞いています。jQueryはキャッシュなどで参照が絡んでいるので、このリスクがあると思いました。
267
+
262
-
263
-
264
-
268
+
265
- > 解答欄を問題のついでに書き換わる部分に置くこと一般的ではありません。
269
+ >また、解答欄を問題のついでに書き換わる部分に置くようなコードはあ見かけません。
266
-
267
-
268
-
269
- (こんな理由かは確かに定かではありませんが、)
270
+
271
+
270
272
 
271
273
  フォームを隠しておきたいときにinnerHTMLやjQuery.fn.htmlでフォームを出すのはそう見かけないと思います。
272
274
 
273
- 考えてみれば、アニメーションを入れるため、とか、tabindexを適切に設定してアクセシビリティを向上させたいから、とか、理由はいろいろあるのでしょう。
275
+ アニメーションを入れるため、とか、tabindexを適切に設定してアクセシビリティを向上させたいから、とか、理由はいろいろあるのでしょう。
274
-
275
-
276
-
276
+
277
- > 解答欄を出した消したりしたならjQueryhide showなど使う方がマシでしょう(アクセシビリティの観点では(略))
277
+ あま見かけなコードは読む人(未来自分含む)を混乱させるので、よくある書きをした方良いのはないでしょう
278
+
279
+
280
+
281
+ > アクセシビリティ
278
282
 
279
283
 
280
284
 
281
285
  hide/showはdisplay属性をいじります。これで要素を出したり隠したりすると、スクリーンリーダーがうまく対応しないということが考えられると思います。最近ではaria-hidden属性を使ってスクリーンリーダー向けにも隠された要素と明示することが広まりつつあると思います。
282
286
 
283
- とはいえ、キーイベントを使った回答受付やjQuery.fn.htmlを使った問題文の更新という作りが、そういった方々への対応を考えたものとは思えません。
287
+ とはいえ、キーイベントを使った回答受付やjQuery.fn.htmlを使った問題文の更新という作りが、そういった方々への対応を考えたものとなっていません。
284
-
288
+
289
+
290
+
285
- ここだけ長々とアクセシビリティにつて書のもおかしいと思い「アクセシビリティ観点では要素いないいないばをさせよくありませんよ」と軽く示に止めようとしました
291
+ いく編集ます。(あから読む方へ)編集内容は投稿日時の下編集日時ところリンクがあるはずです。
286
-
287
- 言われてみれば、そう書いた方がわかりやすかったですね。

1

補足

2017/11/08 04:22

投稿

miimou
miimou

スコア74

test CHANGED
@@ -243,3 +243,45 @@
243
243
 
244
244
 
245
245
  ```
246
+
247
+
248
+
249
+ #### 補足
250
+
251
+ think49さまの指摘もあり、確かに説明不足だと思ったので補足します。
252
+
253
+
254
+
255
+ > こうするのは面倒で、(今ではあまり無いはずですがかつては)メモリリークのリスクなどがあったので、
256
+
257
+
258
+
259
+ イベントハンドラの設定を毎回作り直した要素について行い直すのは、記述の位置がその要素を作った場所になることによって、コールバック地獄を悪化させる恐れがあります。これが「面倒」なことです。
260
+
261
+ さらに、この際に古い要素のイベントハンドラを外し忘れて、DOMオブジェクトとJavascriptオブジェクトを共に含む循環参照ができてしまうと、メモリリークを起こすという現象が昔のIEではあったと聞いています。jQueryはキャッシュなどで参照が絡んでいるので、このリスクがあると思いました。
262
+
263
+
264
+
265
+ > 解答欄を問題のついでに書き換わる部分に置くことは一般的ではありません。
266
+
267
+
268
+
269
+ (こんな理由かは確かに定かではありませんが、)
270
+
271
+ フォームを隠しておきたいときにinnerHTMLやjQuery.fn.htmlでフォームを出すのはそう見かけないと思います。
272
+
273
+ 考えてみれば、アニメーションを入れるため、とか、tabindexを適切に設定してアクセシビリティを向上させたいから、とか、理由はいろいろあるのでしょう。
274
+
275
+
276
+
277
+ > 解答欄を出したり消したりしたいならjQueryのhide showなどを使う方がマシでしょう(アクセシビリティの観点では(略))。
278
+
279
+
280
+
281
+ hide/showはdisplay属性をいじります。これで要素を出したり隠したりすると、スクリーンリーダーがうまく対応しないということが考えられると思います。最近ではaria-hidden属性を使ってスクリーンリーダー向けにも隠された要素と明示することが広まりつつあると思います。
282
+
283
+ とはいえ、キーイベントを使った回答受付やjQuery.fn.htmlを使った問題文の更新という作りが、そういった方々への対応を考えたものとは思えません。
284
+
285
+ ここだけ長々とアクセシビリティについて書くのもおかしいと思い、「アクセシビリティの観点では要素にいないいないばあをさせるのはよくありませんよ」と軽く示すに止めようとしました。
286
+
287
+ 言われてみれば、そう書いた方がわかりやすかったですね。