質問編集履歴

4

より見やすく、リンクなども挿入

2021/09/27 04:38

投稿

inari1973
inari1973

スコア35

test CHANGED
@@ -1 +1 @@
1
- Drawer.jsが急におかしくなった。 【iOS15 Safari】
1
+ Drawer.jsが急におかしくなった。 【iOS15 Safari ハンバーガーメニュー
test CHANGED
@@ -7,6 +7,30 @@
7
7
  Drawer.jsとiScroll.jsを使って
8
8
 
9
9
  横からメニューがでるようにしています。
10
+
11
+
12
+
13
+ [http://git.blivesta.com/drawer/](http://git.blivesta.com/drawer/)
14
+
15
+ Drawer.jsの作者のページ
16
+
17
+
18
+
19
+ [https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.2/js/drawer.js](https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.2/js/drawer.js)
20
+
21
+ Drawer.jsのコード
22
+
23
+
24
+
25
+ [https://github.com/cubiq/iscroll/blob/master/build/iscroll.js](https://github.com/cubiq/iscroll/blob/master/build/iscroll.js)
26
+
27
+ iscroll.jsのコード
28
+
29
+
30
+
31
+ [https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.2/css/drawer.css](https://cdnjs.cloudflare.com/ajax/libs/drawer/3.2.2/css/drawer.css)
32
+
33
+ drawer.cssのコード
10
34
 
11
35
 
12
36
 
@@ -20,13 +44,13 @@
20
44
 
21
45
 
22
46
 
23
- ios15でもchromeや、AndroidPCでは問題なく動きます。
47
+ ios15chromeや、Androidのchrome、PC(Win10)のchromeやedgeでは問題なく動きます。
24
48
 
25
49
 
26
50
 
27
51
  iOS15になりsafariのデザインが刷新されたことが
28
52
 
29
- 原因かもしれません
53
+ 原因だと思われますが・・
30
54
 
31
55
 
32
56
 
@@ -36,398 +60,28 @@
36
60
 
37
61
 
38
62
 
39
- http://git.blivesta.com/drawer/
40
-
41
-
42
-
43
63
  ### 試したこと
44
64
 
45
65
 
46
66
 
47
- https://teratail.com/questions/127838
67
+ [https://teratail.com/questions/127838](https://teratail.com/questions/127838)
48
68
 
49
69
  (Drawer.jsの動きが急におかしくなった)
50
70
 
71
+ →上記の通りに修正すると症状が悪化します。現在は上記の修正は不要だと思います。
51
72
 
52
73
 
74
+
53
- https://cruw.co.jp/blog/drawer-js-bug/
75
+ [https://cruw.co.jp/blog/drawer-js-bug/](https://cruw.co.jp/blog/drawer-js-bug/)
54
76
 
55
77
  (Jqueryプラグイン「drawer」でiPhoneのスクロールができない問題対処法)
56
78
 
57
79
 
58
80
 
59
- https://sublimelife.hatenablog.com/entry/2018/06/21/183718
81
+ [https://sublimelife.hatenablog.com/entry/2018/06/21/183718](https://sublimelife.hatenablog.com/entry/2018/06/21/183718)
60
82
 
61
83
  (jQueryライブラリ「drawer.js」のスクロールがおかしくなった)
62
84
 
63
85
 
64
86
 
65
87
  などの解決策を試しましたが直りませんでした。
66
-
67
-
68
-
69
- ```ここに言語を入力
70
-
71
- /*!
72
-
73
- * jquery-drawer v3.2.2
74
-
75
- * Flexible drawer menu using jQuery, iScroll and CSS.
76
-
77
- * http://git.blivesta.com/drawer
78
-
79
- * License : MIT
80
-
81
- * Author : blivesta <design@blivesta.com> (http://blivesta.com/)
82
-
83
- */
84
-
85
-
86
-
87
- ;(function umd(factory) {
88
-
89
- 'use strict';
90
-
91
- if (typeof define === 'function' && define.amd) {
92
-
93
- define(['jquery'], factory);
94
-
95
- } else if (typeof exports === 'object') {
96
-
97
- module.exports = factory(require('jquery'));
98
-
99
- } else {
100
-
101
- factory(jQuery);
102
-
103
- }
104
-
105
- }(function Drawer($) {
106
-
107
- 'use strict';
108
-
109
- var namespace = 'drawer';
110
-
111
- var touches = typeof document.ontouchstart != 'undefined';
112
-
113
- var __ = {
114
-
115
- init: function init(options) {
116
-
117
- options = $.extend({
118
-
119
- iscroll: {
120
-
121
- mouseWheel: true,
122
-
123
- preventDefault: true
124
-
125
- },
126
-
127
- showOverlay: true
128
-
129
- }, options);
130
-
131
-
132
-
133
- __.settings = {
134
-
135
- state: false,
136
-
137
- events: {
138
-
139
- opened: 'drawer.opened',
140
-
141
- closed: 'drawer.closed'
142
-
143
- },
144
-
145
- dropdownEvents: {
146
-
147
- opened: 'shown.bs.dropdown',
148
-
149
- closed: 'hidden.bs.dropdown'
150
-
151
- }
152
-
153
- };
154
-
155
-
156
-
157
- __.settings.class = $.extend({
158
-
159
- nav: 'drawer-nav',
160
-
161
- toggle: 'drawer-toggle',
162
-
163
- overlay: 'drawer-overlay',
164
-
165
- open: 'drawer-open',
166
-
167
- close: 'drawer-close',
168
-
169
- dropdown: 'drawer-dropdown'
170
-
171
- }, options.class);
172
-
173
-
174
-
175
- return this.each(function instantiateDrawer() {
176
-
177
- var _this = this;
178
-
179
- var $this = $(this);
180
-
181
- var data = $this.data(namespace);
182
-
183
-
184
-
185
- if (!data) {
186
-
187
- options = $.extend({}, options);
188
-
189
- $this.data(namespace, { options: options });
190
-
191
-
192
-
193
- __.refresh.call(_this);
194
-
195
-
196
-
197
- if (options.showOverlay) {
198
-
199
- __.addOverlay.call(_this);
200
-
201
- }
202
-
203
-
204
-
205
- $('.' + __.settings.class.toggle).on('click.' + namespace, function toggle() {
206
-
207
- __.toggle.call(_this);
208
-
209
- return _this.iScroll.refresh();
210
-
211
- });
212
-
213
-
214
-
215
- $(window).on('resize.' + namespace, function close() {
216
-
217
- __.close.call(_this);
218
-
219
- return _this.iScroll.refresh();
220
-
221
- });
222
-
223
-
224
-
225
- $('.' + __.settings.class.dropdown)
226
-
227
- .on(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed, function onOpenedOrClosed() {
228
-
229
- return _this.iScroll.refresh();
230
-
231
- });
232
-
233
- }
234
-
235
-
236
-
237
- }); // end each
238
-
239
- },
240
-
241
-
242
-
243
- refresh: function refresh() {
244
-
245
- this.iScroll = new IScroll(
246
-
247
- '.' + __.settings.class.nav,
248
-
249
- $(this).data(namespace).options.iscroll
250
-
251
- );
252
-
253
- },
254
-
255
-
256
-
257
- addOverlay: function addOverlay() {
258
-
259
- var $this = $(this);
260
-
261
- var $overlay = $('<div>').addClass(__.settings.class.overlay + ' ' + __.settings.class.toggle);
262
-
263
-
264
-
265
- return $this.append($overlay);
266
-
267
- },
268
-
269
-
270
-
271
- toggle: function toggle() {
272
-
273
- var _this = this;
274
-
275
-
276
-
277
- if (__.settings.state) {
278
-
279
- return __.close.call(_this);
280
-
281
- } else {
282
-
283
- return __.open.call(_this);
284
-
285
- }
286
-
287
- },
288
-
289
-
290
-
291
- open: function open() {
292
-
293
- var $this = $(this);
294
-
295
-
296
-
297
- if (touches) {
298
-
299
- document.addEventListener('touchmove.' + namespace, function disableTouch(event) {
300
-
301
- event.preventDefault();
302
-
303
- }, {passive: false});
304
-
305
- }
306
-
307
-
308
-
309
- return $this
310
-
311
- .removeClass(__.settings.class.close)
312
-
313
- .addClass(__.settings.class.open)
314
-
315
- .drawerCallback(function triggerOpenedListeners() {
316
-
317
- __.settings.state = true;
318
-
319
- $this.trigger(__.settings.events.opened);
320
-
321
- });
322
-
323
- },
324
-
325
-
326
-
327
- close: function close() {
328
-
329
- var $this = $(this);
330
-
331
-
332
-
333
- if (touches) $this.off('touchmove.' + namespace);
334
-
335
-
336
-
337
- return $this
338
-
339
- .removeClass(__.settings.class.open)
340
-
341
- .addClass(__.settings.class.close)
342
-
343
- .drawerCallback(function triggerClosedListeners() {
344
-
345
- __.settings.state = false;
346
-
347
- $this.trigger(__.settings.events.closed);
348
-
349
- });
350
-
351
- },
352
-
353
-
354
-
355
- destroy: function destroy() {
356
-
357
- return this.each(function destroyEach() {
358
-
359
- var _this = this;
360
-
361
- var $this = $(this);
362
-
363
- $('.' + __.settings.class.toggle).off('click.' + namespace);
364
-
365
- $(window).off('resize.' + namespace);
366
-
367
- $('.' + __.settings.class.dropdown).off(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed);
368
-
369
- _this.iScroll.destroy();
370
-
371
- $this
372
-
373
- .removeData(namespace)
374
-
375
- .find('.' + __.settings.class.overlay)
376
-
377
- .remove();
378
-
379
- });
380
-
381
- }
382
-
383
-
384
-
385
- };
386
-
387
-
388
-
389
- $.fn.drawerCallback = function drawerCallback(callback) {
390
-
391
- var end = 'transitionend webkitTransitionEnd';
392
-
393
- return this.each(function setAnimationEndHandler() {
394
-
395
- var $this = $(this);
396
-
397
- $this.on(end, function invokeCallbackOnAnimationEnd() {
398
-
399
- $this.off(end);
400
-
401
- return callback.call(this);
402
-
403
- });
404
-
405
- });
406
-
407
- };
408
-
409
-
410
-
411
- $.fn.drawer = function drawer(method) {
412
-
413
- if (__[method]) {
414
-
415
- return __[method].apply(this, Array.prototype.slice.call(arguments, 1));
416
-
417
- } else if (typeof method === 'object' || !method) {
418
-
419
- return __.init.apply(this, arguments);
420
-
421
- } else {
422
-
423
- $.error('Method ' + method + ' does not exist on jQuery.' + namespace);
424
-
425
- }
426
-
427
- };
428
-
429
-
430
-
431
- }));
432
-
433
- ```

3

質問内容の修正

2021/09/27 04:38

投稿

inari1973
inari1973

スコア35

test CHANGED
File without changes
test CHANGED
@@ -16,17 +16,17 @@
16
16
 
17
17
  すぐに閉じるようになってしまいました。
18
18
 
19
+ (ゆっくりスクロールさせると閉じにくい)
20
+
19
21
 
20
22
 
21
23
  ios15でもchromeや、AndroidやPCでは問題なく動きます。
22
24
 
23
25
 
24
26
 
25
- iOS15になりsafariのデザインが刷新され
27
+ iOS15になりsafariのデザインが刷新されたことが
26
-
27
- アドレスバーが画面下部に表示されるようになったことなどが
28
+
28
-
29
- 原因だと思ってい
29
+ 原因かもしれせん
30
30
 
31
31
 
32
32
 
@@ -36,16 +36,10 @@
36
36
 
37
37
 
38
38
 
39
- 元のサイトも同じ症状がでているようです。
40
-
41
39
  http://git.blivesta.com/drawer/
42
40
 
43
41
 
44
42
 
45
- 使用しているコードは上記のURLからdrawer.js v3.2.2(CDNではないもの)とhttps://cdnjs.cloudflare.com/ajax/libs/iScroll/5.2.0/iscroll.jsになります。
46
-
47
-
48
-
49
43
  ### 試したこと
50
44
 
51
45
 

2

コードを追加

2021/09/27 04:11

投稿

inari1973
inari1973

スコア35

test CHANGED
File without changes
test CHANGED
@@ -69,3 +69,371 @@
69
69
 
70
70
 
71
71
  などの解決策を試しましたが直りませんでした。
72
+
73
+
74
+
75
+ ```ここに言語を入力
76
+
77
+ /*!
78
+
79
+ * jquery-drawer v3.2.2
80
+
81
+ * Flexible drawer menu using jQuery, iScroll and CSS.
82
+
83
+ * http://git.blivesta.com/drawer
84
+
85
+ * License : MIT
86
+
87
+ * Author : blivesta <design@blivesta.com> (http://blivesta.com/)
88
+
89
+ */
90
+
91
+
92
+
93
+ ;(function umd(factory) {
94
+
95
+ 'use strict';
96
+
97
+ if (typeof define === 'function' && define.amd) {
98
+
99
+ define(['jquery'], factory);
100
+
101
+ } else if (typeof exports === 'object') {
102
+
103
+ module.exports = factory(require('jquery'));
104
+
105
+ } else {
106
+
107
+ factory(jQuery);
108
+
109
+ }
110
+
111
+ }(function Drawer($) {
112
+
113
+ 'use strict';
114
+
115
+ var namespace = 'drawer';
116
+
117
+ var touches = typeof document.ontouchstart != 'undefined';
118
+
119
+ var __ = {
120
+
121
+ init: function init(options) {
122
+
123
+ options = $.extend({
124
+
125
+ iscroll: {
126
+
127
+ mouseWheel: true,
128
+
129
+ preventDefault: true
130
+
131
+ },
132
+
133
+ showOverlay: true
134
+
135
+ }, options);
136
+
137
+
138
+
139
+ __.settings = {
140
+
141
+ state: false,
142
+
143
+ events: {
144
+
145
+ opened: 'drawer.opened',
146
+
147
+ closed: 'drawer.closed'
148
+
149
+ },
150
+
151
+ dropdownEvents: {
152
+
153
+ opened: 'shown.bs.dropdown',
154
+
155
+ closed: 'hidden.bs.dropdown'
156
+
157
+ }
158
+
159
+ };
160
+
161
+
162
+
163
+ __.settings.class = $.extend({
164
+
165
+ nav: 'drawer-nav',
166
+
167
+ toggle: 'drawer-toggle',
168
+
169
+ overlay: 'drawer-overlay',
170
+
171
+ open: 'drawer-open',
172
+
173
+ close: 'drawer-close',
174
+
175
+ dropdown: 'drawer-dropdown'
176
+
177
+ }, options.class);
178
+
179
+
180
+
181
+ return this.each(function instantiateDrawer() {
182
+
183
+ var _this = this;
184
+
185
+ var $this = $(this);
186
+
187
+ var data = $this.data(namespace);
188
+
189
+
190
+
191
+ if (!data) {
192
+
193
+ options = $.extend({}, options);
194
+
195
+ $this.data(namespace, { options: options });
196
+
197
+
198
+
199
+ __.refresh.call(_this);
200
+
201
+
202
+
203
+ if (options.showOverlay) {
204
+
205
+ __.addOverlay.call(_this);
206
+
207
+ }
208
+
209
+
210
+
211
+ $('.' + __.settings.class.toggle).on('click.' + namespace, function toggle() {
212
+
213
+ __.toggle.call(_this);
214
+
215
+ return _this.iScroll.refresh();
216
+
217
+ });
218
+
219
+
220
+
221
+ $(window).on('resize.' + namespace, function close() {
222
+
223
+ __.close.call(_this);
224
+
225
+ return _this.iScroll.refresh();
226
+
227
+ });
228
+
229
+
230
+
231
+ $('.' + __.settings.class.dropdown)
232
+
233
+ .on(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed, function onOpenedOrClosed() {
234
+
235
+ return _this.iScroll.refresh();
236
+
237
+ });
238
+
239
+ }
240
+
241
+
242
+
243
+ }); // end each
244
+
245
+ },
246
+
247
+
248
+
249
+ refresh: function refresh() {
250
+
251
+ this.iScroll = new IScroll(
252
+
253
+ '.' + __.settings.class.nav,
254
+
255
+ $(this).data(namespace).options.iscroll
256
+
257
+ );
258
+
259
+ },
260
+
261
+
262
+
263
+ addOverlay: function addOverlay() {
264
+
265
+ var $this = $(this);
266
+
267
+ var $overlay = $('<div>').addClass(__.settings.class.overlay + ' ' + __.settings.class.toggle);
268
+
269
+
270
+
271
+ return $this.append($overlay);
272
+
273
+ },
274
+
275
+
276
+
277
+ toggle: function toggle() {
278
+
279
+ var _this = this;
280
+
281
+
282
+
283
+ if (__.settings.state) {
284
+
285
+ return __.close.call(_this);
286
+
287
+ } else {
288
+
289
+ return __.open.call(_this);
290
+
291
+ }
292
+
293
+ },
294
+
295
+
296
+
297
+ open: function open() {
298
+
299
+ var $this = $(this);
300
+
301
+
302
+
303
+ if (touches) {
304
+
305
+ document.addEventListener('touchmove.' + namespace, function disableTouch(event) {
306
+
307
+ event.preventDefault();
308
+
309
+ }, {passive: false});
310
+
311
+ }
312
+
313
+
314
+
315
+ return $this
316
+
317
+ .removeClass(__.settings.class.close)
318
+
319
+ .addClass(__.settings.class.open)
320
+
321
+ .drawerCallback(function triggerOpenedListeners() {
322
+
323
+ __.settings.state = true;
324
+
325
+ $this.trigger(__.settings.events.opened);
326
+
327
+ });
328
+
329
+ },
330
+
331
+
332
+
333
+ close: function close() {
334
+
335
+ var $this = $(this);
336
+
337
+
338
+
339
+ if (touches) $this.off('touchmove.' + namespace);
340
+
341
+
342
+
343
+ return $this
344
+
345
+ .removeClass(__.settings.class.open)
346
+
347
+ .addClass(__.settings.class.close)
348
+
349
+ .drawerCallback(function triggerClosedListeners() {
350
+
351
+ __.settings.state = false;
352
+
353
+ $this.trigger(__.settings.events.closed);
354
+
355
+ });
356
+
357
+ },
358
+
359
+
360
+
361
+ destroy: function destroy() {
362
+
363
+ return this.each(function destroyEach() {
364
+
365
+ var _this = this;
366
+
367
+ var $this = $(this);
368
+
369
+ $('.' + __.settings.class.toggle).off('click.' + namespace);
370
+
371
+ $(window).off('resize.' + namespace);
372
+
373
+ $('.' + __.settings.class.dropdown).off(__.settings.dropdownEvents.opened + ' ' + __.settings.dropdownEvents.closed);
374
+
375
+ _this.iScroll.destroy();
376
+
377
+ $this
378
+
379
+ .removeData(namespace)
380
+
381
+ .find('.' + __.settings.class.overlay)
382
+
383
+ .remove();
384
+
385
+ });
386
+
387
+ }
388
+
389
+
390
+
391
+ };
392
+
393
+
394
+
395
+ $.fn.drawerCallback = function drawerCallback(callback) {
396
+
397
+ var end = 'transitionend webkitTransitionEnd';
398
+
399
+ return this.each(function setAnimationEndHandler() {
400
+
401
+ var $this = $(this);
402
+
403
+ $this.on(end, function invokeCallbackOnAnimationEnd() {
404
+
405
+ $this.off(end);
406
+
407
+ return callback.call(this);
408
+
409
+ });
410
+
411
+ });
412
+
413
+ };
414
+
415
+
416
+
417
+ $.fn.drawer = function drawer(method) {
418
+
419
+ if (__[method]) {
420
+
421
+ return __[method].apply(this, Array.prototype.slice.call(arguments, 1));
422
+
423
+ } else if (typeof method === 'object' || !method) {
424
+
425
+ return __.init.apply(this, arguments);
426
+
427
+ } else {
428
+
429
+ $.error('Method ' + method + ' does not exist on jQuery.' + namespace);
430
+
431
+ }
432
+
433
+ };
434
+
435
+
436
+
437
+ }));
438
+
439
+ ```

1

使用しているコードのバージョンの詳細を記入

2021/09/24 06:57

投稿

inari1973
inari1973

スコア35

test CHANGED
@@ -1 +1 @@
1
- Drawer.jsがスクロールできなくなった 【iOS15 Safari】
1
+ Drawer.jsが急におかしくなった 【iOS15 Safari】
test CHANGED
@@ -18,9 +18,13 @@
18
18
 
19
19
 
20
20
 
21
+ ios15でもchromeや、AndroidやPCでは問題なく動きます。
22
+
23
+
24
+
21
25
  iOS15になりsafariのデザインが刷新され
22
26
 
23
- アドレスバーが画面下部に表示されるようになったことが
27
+ アドレスバーが画面下部に表示されるようになったことなど
24
28
 
25
29
  原因だと思っています。
26
30
 
@@ -35,6 +39,10 @@
35
39
  元のサイトも同じ症状がでているようです。
36
40
 
37
41
  http://git.blivesta.com/drawer/
42
+
43
+
44
+
45
+ 使用しているコードは上記のURLからdrawer.js v3.2.2(CDNではないもの)とhttps://cdnjs.cloudflare.com/ajax/libs/iScroll/5.2.0/iscroll.jsになります。
38
46
 
39
47
 
40
48