回答編集履歴

12

Google Developers → Google Developers Japan

2022/11/27 22:42

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -34,7 +34,7 @@
34
34
  Cf.富永日記帳「[印刷用スタイルを @media print から代替スタイルシートへ変更](https://blog.w0s.jp/612#section-%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8C%E4%BB%A3%E6%9B%BF%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E5%88%87%E6%9B%BF%E6%A9%9F%E6%A7%8B%E3%82%92%E6%9C%89%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E8%AA%BF%E3%81%B9%E3%82%8B)」
35
35
  https://blog.w0s.jp/612#section-ブラウザが代替スタイルシートの切替機構を有しているかどうか調べる
36
36
 
37
- しかし[Chromium Blog](https://blog.chromium.org/2020/07/chrome-85-upload-streaming-human.html)(邦訳[Google Developers](https://developers-jp.googleblog.com/2020/08/chrome-85.html))によれば、Chrome 85では「HTMLLinkElement の "disabled" 属性の動作のアップデート」がなされ、以下の動作が削除されたともある。
37
+ しかし[Chromium Blog](https://blog.chromium.org/2020/07/chrome-85-upload-streaming-human.html)(邦訳[Google Developers Japan](https://developers-jp.googleblog.com/2020/08/chrome-85.html)2020年8月18日)によれば、Chrome 85では「HTMLLinkElement の "disabled" 属性の動作のアップデート」がなされ、以下の動作が削除されたともある。
38
38
  - document.stylesheets から disabled 属性の値にアクセスできませんでした。
39
39
  - disabled 属性を false に変更した後 true に戻すと、document.stylesheets に表示され、そこに残ったままになっていました。
40
40
  - 代替スタイルシートを有効にする唯一の方法は、無効にした後再度有効にすることでした。

11

disabled真偽値判定プログラム短縮

2022/11/24 17:02

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -42,15 +42,13 @@
42
42
 
43
43
  念の為、下記のJavaScriptプログラムを仕込んだページをリロードして確認した所、各タイトル毎の代替スタイルシートについてdisabledかどうかの真偽値がfalseと出たのは、FirefoxでもChromeやEdgeやOperaでも(ついでに別系統エンジンの[Falkon](https://www.falkon.org/)でも)みな同じで、結果に差は無かった。
44
44
  ```JavaScript
45
- <script type="text/javascript"><!--
45
+ <script type="text/javascript">
46
- var Links = document.getElementsByTagName('link');
46
+ var Links = document.getElementsByTagName('link');// =document.styleSheets; だとFirefox以外は代替シート認識しない
47
47
  for(var i=0; i<Links.length; i++) {
48
- if (Links[i].rel.toLowerCase().indexOf("stylesheet")==-1) continue;//CSS指定以外のlink要素はスキップする。
49
- var rel = Links[i].getAttribute("rel").toLowerCase();
50
- if (Links[i].title !== null && rel.indexOf("alternate")!=-1) /* title属性が存在し且つrel属性値に'alternate'が含まれるならば代替スタイルシートである。 */
48
+ if (Links[i].title !== null && Links[i].rel.indexOf("alternate")!=-1) /* title属性が存在し且つrel属性値に'alternate'が含まれるならば代替スタイルシートである。 */
51
- alert(Links[i].title + "=" + Links[i].disabled);//結果の出力
49
+ alert(Links[i].title + "=" + Links[i].disabled);//結果の出力
52
50
  }
53
- //--></script>
51
+ </script>
54
52
  ```
55
53
 
56
54
  スタイル切替プログラム全体も、もっとすっきりと書き直すべきなのかもしれないが、不得手なので、うまい書き方があれば御教示を得たい。

10

dss → Links

2022/11/24 16:15

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -48,7 +48,7 @@
48
48
  if (Links[i].rel.toLowerCase().indexOf("stylesheet")==-1) continue;//CSS指定以外のlink要素はスキップする。
49
49
  var rel = Links[i].getAttribute("rel").toLowerCase();
50
50
  if (Links[i].title !== null && rel.indexOf("alternate")!=-1) /* title属性が存在し且つrel属性値に'alternate'が含まれるならば代替スタイルシートである。 */
51
- alert(dss[i].title + "=" + dss[i].disabled);//結果の出力
51
+ alert(Links[i].title + "=" + Links[i].disabled);//結果の出力
52
52
  }
53
53
  //--></script>
54
54
  ```

9

各タイトル毎の代替スタイルシートについてdisabledかどうかの真偽値を判定するプログラム

2022/11/24 04:52

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -40,5 +40,18 @@
40
40
  - 代替スタイルシートを有効にする唯一の方法は、無効にした後再度有効にすることでした。
41
41
  このアップデート後のヴァージョンなのに、disabled=true(無効)にしてからでないとdisabled=false(有効)にならないのは、どう理解したものか?
42
42
 
43
+ 念の為、下記のJavaScriptプログラムを仕込んだページをリロードして確認した所、各タイトル毎の代替スタイルシートについてdisabledかどうかの真偽値がfalseと出たのは、FirefoxでもChromeやEdgeやOperaでも(ついでに別系統エンジンの[Falkon](https://www.falkon.org/)でも)みな同じで、結果に差は無かった。
44
+ ```JavaScript
43
- プログラム全体も、もっとすっきりと書き直すべきなのかもしれないが、不得手なので、うまい書き方があれば御教示を得たい。
45
+ <script type="text/javascript"><!--
46
+ var Links = document.getElementsByTagName('link');
47
+ for(var i=0; i<Links.length; i++) {
48
+ if (Links[i].rel.toLowerCase().indexOf("stylesheet")==-1) continue;//CSS指定以外のlink要素はスキップする。
49
+ var rel = Links[i].getAttribute("rel").toLowerCase();
50
+ if (Links[i].title !== null && rel.indexOf("alternate")!=-1) /* title属性が存在し且つrel属性値に'alternate'が含まれるならば代替スタイルシートである。 */
51
+ alert(dss[i].title + "=" + dss[i].disabled);//結果の出力
52
+ }
53
+ //--></script>
54
+ ```
44
55
 
56
+ スタイル切替プログラム全体も、もっとすっきりと書き直すべきなのかもしれないが、不得手なので、うまい書き方があれば御教示を得たい。
57
+

8

https://www.binarydevelop.com/article/html5web-6927

2022/11/23 15:22

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -24,11 +24,14 @@
24
24
  優先スタイルシートありの状態でちゃんと代替スタイルとかぶらないでスイッチできるみたいなので、ソースを覗き、その[styles.js](http://confetto.s31.xrea.com/misc/styles.js) 中「スタイルシートを切り替える。」`Switch : function(name) {`以下、特に「Opera9で必要?」とコメントのある行を真似た。
25
25
 
26
26
  原因説明としては、「IE9、Chrome 22、Safari 5で確認したところ、代替スタイルシートが適用されていなくてもdisabledがfalseとなっていました。その状態でfalseに設定してもスタイルシートは有効とならないため」「あらかじめ無効に設定することで、有効の設定が機能する」との記述が当て嵌まるか。
27
- Cf. JavaScript プログラミング解説「スタイルの制御」中「スタイルシートの切り替え」
27
+ Cf. JavaScript プログラミング解説「スタイルの制御」中「[スタイルシートの切り替え](https://so-zou.jp/web-app/tech/programming/javascript/css/#no3)
28
28
  https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
29
29
 
30
+ 「新しいスタイルシートに動的に切り替えるには、まず利用可能なすべてのオプショナルスタイルシートを無効にする必要があります」云々と「[HTML5でオプションのスタイルシートを使ってWebサイトやアプリケーションにダークモードを追加する方法を解説](https://www.binarydevelop.com/article/html5web-6927)」にも見える。
31
+ https://www.binarydevelop.com/article/html5web-6927
32
+
30
33
  また、より新しいヴァージョンでも、「document.styleSheets で取得した代替スタイルシートの disabled の値が Firefox 76, IE 11, Opera 12 は true で、 Chrome 83, Edge 83 は false になる」とのこと。
31
- Cf.富永日記帳「印刷用スタイルを @media print から代替スタイルシートへ変更」
34
+ Cf.富永日記帳「[印刷用スタイルを @media print から代替スタイルシートへ変更](https://blog.w0s.jp/612#section-%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6%E3%81%8C%E4%BB%A3%E6%9B%BF%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AE%E5%88%87%E6%9B%BF%E6%A9%9F%E6%A7%8B%E3%82%92%E6%9C%89%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E8%AA%BF%E3%81%B9%E3%82%8B)
32
35
  https://blog.w0s.jp/612#section-ブラウザが代替スタイルシートの切替機構を有しているかどうか調べる
33
36
 
34
37
  しかし[Chromium Blog](https://blog.chromium.org/2020/07/chrome-85-upload-streaming-human.html)(邦訳[Google Developers](https://developers-jp.googleblog.com/2020/08/chrome-85.html))によれば、Chrome 85では「HTMLLinkElement の "disabled" 属性の動作のアップデート」がなされ、以下の動作が削除されたともある。

7

富永日記帳

2022/11/14 11:02

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -28,7 +28,7 @@
28
28
  https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
29
29
 
30
30
  また、より新しいヴァージョンでも、「document.styleSheets で取得した代替スタイルシートの disabled の値が Firefox 76, IE 11, Opera 12 は true で、 Chrome 83, Edge 83 は false になる」とのこと。
31
- Cf.「印刷用スタイルを @media print から代替スタイルシートへ変更」
31
+ Cf.富永日記帳「印刷用スタイルを @media print から代替スタイルシートへ変更」
32
32
  https://blog.w0s.jp/612#section-ブラウザが代替スタイルシートの切替機構を有しているかどうか調べる
33
33
 
34
34
  しかし[Chromium Blog](https://blog.chromium.org/2020/07/chrome-85-upload-streaming-human.html)(邦訳[Google Developers](https://developers-jp.googleblog.com/2020/08/chrome-85.html))によれば、Chrome 85では「HTMLLinkElement の "disabled" 属性の動作のアップデート」がなされ、以下の動作が削除されたともある。

6

#section-ブラウザが代替スタイルシートの切替機構を有しているかどうか調べる

2022/11/14 11:00

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -25,9 +25,12 @@
25
25
 
26
26
  原因説明としては、「IE9、Chrome 22、Safari 5で確認したところ、代替スタイルシートが適用されていなくてもdisabledがfalseとなっていました。その状態でfalseに設定してもスタイルシートは有効とならないため」「あらかじめ無効に設定することで、有効の設定が機能する」との記述が当て嵌まるか。
27
27
  Cf. JavaScript プログラミング解説「スタイルの制御」中「スタイルシートの切り替え」
28
-  https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
28
+ https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
29
+
29
30
  また、より新しいヴァージョンでも、「document.styleSheets で取得した代替スタイルシートの disabled の値が Firefox 76, IE 11, Opera 12 は true で、 Chrome 83, Edge 83 は false になる」とのこと。
30
- Cf.「印刷用スタイルを @media print から代替スタイルシートへ変更」 https://blog.w0s.jp/612
31
+ Cf.「印刷用スタイルを @media print から代替スタイルシートへ変更」
32
+ https://blog.w0s.jp/612#section-ブラウザが代替スタイルシートの切替機構を有しているかどうか調べる
33
+
31
34
  しかし[Chromium Blog](https://blog.chromium.org/2020/07/chrome-85-upload-streaming-human.html)(邦訳[Google Developers](https://developers-jp.googleblog.com/2020/08/chrome-85.html))によれば、Chrome 85では「HTMLLinkElement の "disabled" 属性の動作のアップデート」がなされ、以下の動作が削除されたともある。
32
35
  - document.stylesheets から disabled 属性の値にアクセスできませんでした。
33
36
  - disabled 属性を false に変更した後 true に戻すと、document.stylesheets に表示され、そこに残ったままになっていました。

5

https://developers-jp.googleblog.com/2020/08/chrome-85.html を参照して補記。

2022/11/14 10:28

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -22,11 +22,17 @@
22
22
  参考にしたのは、下記サイト「代替スタイルシート切替JavaScript」である。
23
23
  http://confetto.s31.xrea.com/misc/switchstyles
24
24
  優先スタイルシートありの状態でちゃんと代替スタイルとかぶらないでスイッチできるみたいなので、ソースを覗き、その[styles.js](http://confetto.s31.xrea.com/misc/styles.js) 中「スタイルシートを切り替える。」`Switch : function(name) {`以下、特に「Opera9で必要?」とコメントのある行を真似た。
25
+
25
26
  原因説明としては、「IE9、Chrome 22、Safari 5で確認したところ、代替スタイルシートが適用されていなくてもdisabledがfalseとなっていました。その状態でfalseに設定してもスタイルシートは有効とならないため」「あらかじめ無効に設定することで、有効の設定が機能する」との記述が当て嵌まるか。
26
27
  Cf. JavaScript プログラミング解説「スタイルの制御」中「スタイルシートの切り替え」
27
28
   https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
28
29
  また、より新しいヴァージョンでも、「document.styleSheets で取得した代替スタイルシートの disabled の値が Firefox 76, IE 11, Opera 12 は true で、 Chrome 83, Edge 83 は false になる」とのこと。
29
30
  Cf.「印刷用スタイルを @media print から代替スタイルシートへ変更」 https://blog.w0s.jp/612
31
+ しかし[Chromium Blog](https://blog.chromium.org/2020/07/chrome-85-upload-streaming-human.html)(邦訳[Google Developers](https://developers-jp.googleblog.com/2020/08/chrome-85.html))によれば、Chrome 85では「HTMLLinkElement の "disabled" 属性の動作のアップデート」がなされ、以下の動作が削除されたともある。
32
+ - document.stylesheets から disabled 属性の値にアクセスできませんでした。
33
+ - disabled 属性を false に変更した後 true に戻すと、document.stylesheets に表示され、そこに残ったままになっていました。
34
+ - 代替スタイルシートを有効にする唯一の方法は、無効にした後再度有効にすることでした。
35
+ このアップデート後のヴァージョンなのに、disabled=true(無効)にしてからでないとdisabled=false(有効)にならないのは、どう理解したものか?
30
36
 
31
37
  プログラム全体も、もっとすっきりと書き直すべきなのかもしれないが、不得手なので、うまい書き方があれば御教示を得たい。
32
38
 

4

https://blog.w0s.jp/612 を参照して加筆。

2022/11/14 09:52

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -22,9 +22,11 @@
22
22
  参考にしたのは、下記サイト「代替スタイルシート切替JavaScript」である。
23
23
  http://confetto.s31.xrea.com/misc/switchstyles
24
24
  優先スタイルシートありの状態でちゃんと代替スタイルとかぶらないでスイッチできるみたいなので、ソースを覗き、その[styles.js](http://confetto.s31.xrea.com/misc/styles.js) 中「スタイルシートを切り替える。」`Switch : function(name) {`以下、特に「Opera9で必要?」とコメントのある行を真似た。
25
- 原因説明としては、「IE9、Chrome 22、Safari 5で確認したところ、代替スタイルシートが適用されていなくてもdisabledがfalseとなっていました。その状態でfalseに設定してもスタイルシートは有効とならないため」、Chromeその他では「あらかじめ無効に設定することで、有効の設定が機能する」のかと察せられる
25
+ 原因説明としては、「IE9、Chrome 22、Safari 5で確認したところ、代替スタイルシートが適用されていなくてもdisabledがfalseとなっていました。その状態でfalseに設定してもスタイルシートは有効とならないため」「あらかじめ無効に設定することで、有効の設定が機能する」記述が当て嵌まるか。
26
26
  Cf. JavaScript プログラミング解説「スタイルの制御」中「スタイルシートの切り替え」
27
- https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
27
+  https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
28
+ また、より新しいヴァージョンでも、「document.styleSheets で取得した代替スタイルシートの disabled の値が Firefox 76, IE 11, Opera 12 は true で、 Chrome 83, Edge 83 は false になる」とのこと。
29
+ Cf.「印刷用スタイルを @media print から代替スタイルシートへ変更」 https://blog.w0s.jp/612
28
30
 
29
31
  プログラム全体も、もっとすっきりと書き直すべきなのかもしれないが、不得手なので、うまい書き方があれば御教示を得たい。
30
32
 

3

https://so-zou.jp/web-app/tech/programming/javascript/css/#no3 を参照して補筆。

2022/11/14 09:11

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -22,6 +22,9 @@
22
22
  参考にしたのは、下記サイト「代替スタイルシート切替JavaScript」である。
23
23
  http://confetto.s31.xrea.com/misc/switchstyles
24
24
  優先スタイルシートありの状態でちゃんと代替スタイルとかぶらないでスイッチできるみたいなので、ソースを覗き、その[styles.js](http://confetto.s31.xrea.com/misc/styles.js) 中「スタイルシートを切り替える。」`Switch : function(name) {`以下、特に「Opera9で必要?」とコメントのある行を真似た。
25
+ 原因説明としては、「IE9、Chrome 22、Safari 5で確認したところ、代替スタイルシートが適用されていなくてもdisabledがfalseとなっていました。その状態でfalseに設定してもスタイルシートは有効とならないため」、Chromeその他では「あらかじめ無効に設定することで、有効の設定が機能する」のかと察せられる。
26
+ Cf. JavaScript プログラミング解説「スタイルの制御」中「スタイルシートの切り替え」
27
+ https://so-zou.jp/web-app/tech/programming/javascript/css/#no3
25
28
 
26
29
  プログラム全体も、もっとすっきりと書き直すべきなのかもしれないが、不得手なので、うまい書き方があれば御教示を得たい。
27
30
 

2

句点の脱字を補った。

2022/11/09 12:22

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -17,7 +17,7 @@
17
17
  }
18
18
  ```
19
19
  スタイル切替の前に一遍、外部スタイルシート全部を無効にする手順を踏んでから、メニューで選択したシートを有効にする次第。
20
- Firefox、Chrome、Edge、Operaいづれでも正常に動作した
20
+ Firefox、Chrome、Edge、Operaいづれでも正常に動作した
21
21
 
22
22
  参考にしたのは、下記サイト「代替スタイルシート切替JavaScript」である。
23
23
  http://confetto.s31.xrea.com/misc/switchstyles

1

四行→五行

2022/11/09 12:20

投稿

M.Y.
M.Y.

スコア29

test CHANGED
@@ -1,5 +1,5 @@
1
1
 
2
- 上掲プログラムで問題があったのは、下記の行中`sS[i].disabled = !sS[i].disabled;`の箇所だった。
2
+ 上掲プログラムで問題があったのは、下記の行中`sS[i].disabled = !sS[i].disabled;`の箇所だった。
3
3
  ```JavaScript
4
4
  if ( sS[i].title || sS[i].title!="" ) //Chrome対策
5
5
  {// titleがある(優先or代替スタイルシート)