回答編集履歴

6

2017/09/06 15:12 追記

2017/09/06 06:15

投稿

think49
think49

スコア18166

test CHANGED
@@ -53,6 +53,10 @@
53
53
  <![endif]-->
54
54
 
55
55
  ```
56
+
57
+
58
+
59
+ **(2017/09/06 15:12 追記)**
56
60
 
57
61
 
58
62
 

5

条件付きコメントを解釈できない IE10 以降およびIE以外のブラウザ用のコード追記

2017/09/06 06:15

投稿

think49
think49

スコア18166

test CHANGED
@@ -56,6 +56,54 @@
56
56
 
57
57
 
58
58
 
59
+ ただし、この書き方では条件付きコメントを解釈できない IE10 以降およびIE以外のブラウザでは jQuery が読み込まれないという致命的な問題があります。
60
+
61
+ そこで、これらのブラウザ用に「jQueryが読み込まれなかった時用のコード」を書いて対応します。
62
+
63
+
64
+
65
+ ```HTML
66
+
67
+ <!--[if lte IE 8]>
68
+
69
+ <script type="text/javascript" src="./assets/js/jquery-1.12.4.js"></script>
70
+
71
+ <![endif]-->
72
+
73
+ <script type="text/javascript">
74
+
75
+ 'use strict';
76
+
77
+ if (typeof jQuery !== 'function') {
78
+
79
+ (function () {
80
+
81
+ var script = document.createElement('script');
82
+
83
+ script.type = 'text/javascript';
84
+
85
+ script.src = './assets/js/jquery-3.2.1.js';
86
+
87
+ document.body.appendChild(script);
88
+
89
+ }());
90
+
91
+ }
92
+
93
+ </script>
94
+
95
+ ```
96
+
97
+
98
+
99
+ なお、要件としてはこれで対応できると思いますが、jquery-1.12.4.js, jquery-3.2.1.js のどちらかをDLする仕組みにメリットがあるかについては疑問が残ります。
100
+
101
+ IE8, IE11 の両方に対応しなければならない以上、どちらにも存在する機能でコードを書かざるを得ず、jquery-3.2.1.js だけに存在する最深の機能を使うことが出来ません。
102
+
103
+ 通常であれば、jquery-1.12.4.js のみをDLする実装で問題はないと思われますので、今一度設計を考え直してみると良いかもしれません。
104
+
105
+
106
+
59
107
  ### script要素を置く場所
60
108
 
61
109
 

4

<!--\[if gte IE 9\]--> -> <!--\[if gte IE 9\]>

2017/09/06 06:12

投稿

think49
think49

スコア18166

test CHANGED
@@ -42,15 +42,15 @@
42
42
 
43
43
  <!--[if lte IE 8]>
44
44
 
45
- <script type="text/javascript" src="./assets/js/jqyert-1.12.4.js"></script>
45
+ <script type="text/javascript" src="./assets/js/jquery-1.12.4.js"></script>
46
46
 
47
47
  <![endif]-->
48
48
 
49
- <!--[if gte IE 9]-->
49
+ <!--[if gte IE 9]>
50
50
 
51
- <script type="text/javascript" src="./assets/js/jqyert-3.2.1.js"></script>
51
+ <script type="text/javascript" src="./assets/js/jquery-3.2.1.js"></script>
52
52
 
53
- <!--[endif]-->
53
+ <![endif]-->
54
54
 
55
55
  ```
56
56
 

3

<!\[endif\]-->

2017/09/06 06:07

投稿

think49
think49

スコア18166

test CHANGED
@@ -44,13 +44,13 @@
44
44
 
45
45
  <script type="text/javascript" src="./assets/js/jqyert-1.12.4.js"></script>
46
46
 
47
- <![end if]-->
47
+ <![endif]-->
48
48
 
49
49
  <!--[if gte IE 9]-->
50
50
 
51
51
  <script type="text/javascript" src="./assets/js/jqyert-3.2.1.js"></script>
52
52
 
53
- <!--[end if]-->
53
+ <!--[endif]-->
54
54
 
55
55
  ```
56
56
 

2

表現の修正

2017/09/06 05:45

投稿

think49
think49

スコア18166

test CHANGED
@@ -30,7 +30,7 @@
30
30
 
31
31
 
32
32
 
33
- ところが、上記マークアップでは全てコメントとし成立している為、モダンブラウザでは jquery-1.12.4.js, jquery-3.2.1.js の両方がダウンロードされ、jquery-1.12.4.js の実行は jquery-3.2.1.js の実行によって上書き実行されることになります。
33
+ ところが、上記マークアップでは条件文でコメントが閉じられてしまっている為、モダンブラウザでは jquery-1.12.4.js, jquery-3.2.1.js の両方がダウンロードされ、jquery-1.12.4.js の実行は jquery-3.2.1.js の実行によって上書き実行されることになります。
34
34
 
35
35
  **条件付きコメントは IE10 で廃止されました**ので、IE11 でも二重にダウンロード→実行されます。
36
36
 

1

表現の微修正

2017/09/05 08:54

投稿

think49
think49

スコア18166

test CHANGED
@@ -24,17 +24,15 @@
24
24
 
25
25
 
26
26
 
27
- IE9- までサポートされていた条件付きコメントですが、書き方が正しくないように思います。
27
+ **条件付きコメント書き方が正しくない**ように思います。
28
28
 
29
- このコメントのポイントは条件付きコメントを解釈できるブラウザ(IE9-)では条件分岐処理が働き、**条件付きコメントを解釈できないブラウザ(IE10+, Firefox, Google Chrome 等のモダンブラウザ)では通常のコメントとして扱われる**ところにあります。
29
+ このコメントのポイントは条件付きコメントを解釈できるブラウザ(IE9-)では条件分岐処理が働き、条件付きコメントを解釈できないブラウザ(IE10+, Firefox, Google Chrome 等のモダンブラウザ)では通常のコメントとして扱われるところにあります。
30
30
 
31
31
 
32
32
 
33
- ところが、上記マークアップでは全てコメントとして成立している為、モダンブラウザでは jquery-1.12.4.js, jquery-3.2.1.js の両方がダウンロードされ、実行されることになります。
33
+ ところが、上記マークアップでは全てコメントとして成立している為、モダンブラウザでは jquery-1.12.4.js, jquery-3.2.1.js の両方がダウンロードされ、jquery-1.12.4.js の実行は jquery-3.2.1.js の実行によって上書き実行されることになります。
34
34
 
35
- jquery-1.12.4.js の実行は jquery-3.2.1.js の実行によって上書きされるわけですが、jquery-1.12.4.js が余計に実行されてしまっています。
36
-
37
- **条件付きコメントは IE10 で廃止されました**ので、IE11 でも同様です。
35
+ **条件付きコメントは IE10 で廃止されました**ので、IE11 でも二重にダウンロード→実行されます。
38
36
 
39
37
  解決する為にはモダンブラウザで読み込んでほしくない部分は、HTMLのコメントの文法が成立する形ででコメントアウトする必要があります。
40
38