質問編集履歴

2

「試したこと」にコードを記載し、タイトル変更と説明を変更

2020/03/23 09:29

投稿

mario_parallel
mario_parallel

スコア5

test CHANGED
@@ -1 +1 @@
1
- Pjaxを採用したオリジナルWordPressテーマによるサイト制作中、ZoomSlider.jsの画面がブラウザバックで表示されなくなるのを回避したい。
1
+ Pjaxを採用したオリジナルWordPressテーマによるサイト制作中、ZoomSlider.jsの画面がブラウザバックや他ページからのリンククリックで表示されなくなるのを回避したい。
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  初めて質問させていただきます。
6
6
 
7
- 取引先様が作成した、Pjaxを採用し表示速度を速めたWordPressオリジナルテーマがあります。
7
+ 取引先様が作成した、Pjax(Barba.js)を採用し表示速度を速めたWordPressオリジナルテーマがあります。
8
8
 
9
9
  私はそのテーマを使ったWebサイトの修正を行っています。
10
10
 
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- しかしながら、「ページ内のリンクを踏んで別ページに遷移した後、ブラウザバックでTOPページに戻る」という動作を行うと、スライダー画像が表示されない事象が発生しております。
19
+ しかしながら、「ページ内のリンクを踏んで別ページに遷移した後、ブラウザバックでTOPページに戻る」「他ページからTOPページへのリンクを踏んで遷移する」という動作を行うと、スライダー画像が表示されない事象が発生しております。
20
20
 
21
21
  スライダー用のHTML内に記述した、<div class="inner-content"></div>(画像の上にテキストなどを表示させる際の記述)の情報は表示されており、ショートコードは実行されているものと思われます。
22
22
 
@@ -24,7 +24,7 @@
24
24
 
25
25
 
26
26
 
27
- 恐らくPjaxでページ遷移を処理していることから、ブラウザバック妙な挙動をしているものと思われます。
27
+ 恐らくPjaxでページ遷移を処理していることから、ブラウザバックや表示の際に妙な挙動をしているものと思われます。
28
28
 
29
29
  Pjaxという概念に疎く、このような状況は初めてです。
30
30
 
@@ -446,9 +446,25 @@
446
446
 
447
447
  ・Pjaxを実行するにあたって読み込まれている他バージョンのjQueryとコンフリクトしないための記述を行う。
448
448
 
449
- ・画面のロードを行った際に、ショートコードの周辺のみリロードさせるようなJavaScript/jQueryの記述ができないか模索。(うまくいかず)
449
+ TOPページに遷移し画面のロードを行った際に(「.is-open」というclassが出現)、ショートコードの周辺のみリロードさせるようなJavaScript/jQueryの記述ができないか模索。(うまくいかず)
450
+
450
-
451
+ ```PHP
452
+
451
-
453
+ <?php if ( is_home() || is_front_page() ) : ?>
454
+
455
+ <script type="text/javascript">
456
+
457
+ if($(document).on('load','#main_contents') && $('#main_contents').hasClass('.is-open')) {
458
+
459
+ $('.zoomSlide_div').location.reload(true); //ここの部分が効かず
460
+
461
+ }
462
+
463
+ </script>
464
+
465
+ <?php endif; ?>
466
+
467
+ ```
452
468
 
453
469
 
454
470
 

1

必要部分をマスクした一部のソースコードを記載いたしました。

2020/03/23 09:29

投稿

mario_parallel
mario_parallel

スコア5

test CHANGED
File without changes
test CHANGED
@@ -46,14 +46,398 @@
46
46
 
47
47
 
48
48
 
49
+ ```jQery
50
+
51
+ /* ===================================================
52
+
53
+ // Barba setting
54
+
55
+ ==================================================== */
56
+
57
+
58
+
59
+ Barba.Pjax.Dom.wrapperId = 'ch';
60
+
61
+ Barba.Pjax.Dom.containerClass = 'c-ch';
62
+
63
+ Barba.Pjax.init();
64
+
65
+ Barba.Prefetch.init(); //dispatcher settings
66
+
67
+
68
+
69
+ Barba.Pjax.originalPreventCheck = Barba.Pjax.preventCheck;
70
+
71
+ Barba.Pjax.preventCheck = function(evt, element) {
72
+
73
+ if(element){
74
+
75
+ if (!element.getAttribute('href')) {
76
+
77
+ return false;
78
+
79
+ }
80
+
81
+ // �O�������N��target="_blank"��
82
+
83
+ var site_url = location.protocol + '//' + location.host;
84
+
85
+ if (!element.href.startsWith(site_url)) {
86
+
87
+ element.setAttribute('target','_blank');
88
+
89
+ return false;
90
+
91
+ }
92
+
93
+ // �A���J�[�����N�ł��蓯��y�[�W�łȂ����barba��L����
94
+
95
+ var url = location.protocol + '//' + location.host + location.pathname;
96
+
97
+ var extract_hash = element.href.replace(/#.*$/,"");
98
+
99
+ if (element.href.startsWith(location.protocol + '//' + location.host)) {
100
+
101
+ if (element.href.indexOf('#') > -1 && extract_hash != url ){
102
+
103
+ return true;
104
+
105
+ }
106
+
107
+ }
108
+
109
+ // �g���q���Y������ꍇ��target="_blank"��
110
+
111
+ if (/.(xlsx?|docx?|pptx?|pdf|jpe?g|png|gif|svg)/.test(element.href.toLowerCase())) {
112
+
113
+ element.setAttribute('target','_blank');
114
+
115
+ return false;
116
+
117
+ }
118
+
119
+ // �Y���N���X�ɑ����Ă����Barba�????���
120
+
121
+ var ignoreClasses = ['ab-item','nagare-no-barba'];
122
+
123
+ for (var i = 0; i < ignoreClasses.length; i++) {
124
+
125
+ if (element.classList.contains(ignoreClasses[i])) {
126
+
127
+ return false;
128
+
129
+ }
130
+
131
+ }
132
+
133
+ if (!Barba.Pjax.originalPreventCheck(evt, element)) {
134
+
135
+ return false;
136
+
137
+ }
138
+
139
+ return true;
140
+
141
+ }
142
+
143
+ };
144
+
145
+
146
+
147
+ Barba.Dispatcher.on('newPageReady', function (currentStatus, oldStatus, container, newPageRawHTML) {
148
+
149
+ //header rewrite
150
+
151
+ if (Barba.HistoryManager.history.length === 1) {
152
+
153
+ return;
154
+
155
+ }
156
+
157
+
158
+
159
+ var head = document.head;
160
+
161
+ var newPageRawHead = newPageRawHTML.match(/<head[^>]*>([\s\S.]*)</head>/i)[0];
162
+
163
+ var newPageHead = document.createElement('head');
164
+
165
+ newPageHead.innerHTML = newPageRawHead;
166
+
167
+ var removeHeadTags = ["meta[name='description']", "meta[property^='og']", "meta[name^='twitter']", "meta[itemprop]", "link[itemprop]", "link[rel='prev']", "link[rel='next']", "link[rel='canonical']"].join(',');
168
+
169
+ var headTags = head.querySelectorAll(removeHeadTags);
170
+
171
+
172
+
173
+ for (var i = 0; i < headTags.length; i++) {
174
+
175
+ head.removeChild(headTags[i]);
176
+
177
+ }
178
+
179
+
180
+
181
+ var newHeadTags = newPageHead.querySelectorAll(removeHeadTags);
182
+
183
+
184
+
185
+ for (var _i = 0; _i < newHeadTags.length; _i++) {
186
+
187
+ head.appendChild(newHeadTags[_i]);
188
+
189
+ }
190
+
191
+
192
+
193
+ var newPageRawLogo1 = newPageRawHTML.match(/<div id="logo"[^>]*>([\s\S.]*?)</div>/i)[1];
194
+
195
+ $("#logo").html(newPageRawLogo1);
196
+
197
+
198
+
199
+ let gam_opt_divs = ['div-gpt-ad-1572933303259-0', 'div-gpt-ad-1572933415196-0', 'div-gpt-ad-1572933511534-0']; //����������Ă������K�pID���Z�b�g���܂��B
200
+
201
+ requestAnimationFrame(function () {
202
+
203
+ googletag.cmd.push(function () {
204
+
205
+ googletag.pubads().refresh(gptAdSlots); //�L���̍X�V
206
+
207
+ for(var opt_div in gam_opt_divs){
208
+
209
+ googletag.display(opt_div); //�L���̍ĕ\��
210
+
211
+ }
212
+
213
+ });
214
+
215
+ });
216
+
217
+ }); //unique settings
218
+
219
+
220
+
221
+ // call clearAllGAMSlots in linkClicked event
222
+
223
+ Barba.Dispatcher.on('linkClicked', function (el) {
224
+
225
+ if (!window.googletag) {
226
+
227
+ requestAnimationFrame(function () {
228
+
229
+ googletag.cmd.push(function () {
230
+
231
+ googletag.pubads().clear();
232
+
233
+ });
234
+
235
+ });
236
+
237
+ }
238
+
239
+ });
240
+
241
+
242
+
243
+ var ChangeDammyRight = $('.changedammy-right');
244
+
245
+ var ChangeAnimation = $('.change-animation');
246
+
247
+
248
+
249
+ var switchInAnimation = function switchInAnimation(callback) {
250
+
251
+ ChangeAnimation.addClass('is-open');
252
+
253
+
254
+
255
+ if (ChangeAnimation.hasClass('is-close')) {
256
+
257
+ ChangeAnimation.removeClass('is-close');
258
+
259
+ }
260
+
261
+
262
+
263
+ if (callback) {
264
+
265
+ callback();
266
+
267
+ }
268
+
269
+ };
270
+
271
+
272
+
273
+ var switchOutAnimation = function switchOutAnimation(callback) {
274
+
275
+ ChangeAnimation.addClass('is-close');
276
+
277
+ $('html').addClass('is-close');
278
+
279
+
280
+
281
+ if (ChangeAnimation.hasClass('is-open')) {
282
+
283
+ ChangeAnimation.removeClass('is-open');
284
+
285
+ }
286
+
287
+
288
+
289
+ if (callback) {
290
+
291
+ callback();
292
+
293
+ }
294
+
295
+ };
296
+
297
+
298
+
299
+ var PageTransition = Barba.BaseTransition.extend({
300
+
301
+ start: function start() {
302
+
303
+ Promise.all([
304
+
305
+ this.newContainerLoading,
306
+
307
+ this.fadeOut()
308
+
309
+ ]).then(this.fadeIn.bind(this));
310
+
311
+ },
312
+
313
+
314
+
315
+ fadeOut: function fadeOut() {
316
+
317
+ switchOutAnimation();
318
+
319
+ return $(this.oldContainer).animate({
320
+
321
+ opacity: 0
322
+
323
+ }).promise();
324
+
325
+ },
326
+
327
+
328
+
329
+ fadeIn: function fadeIn() {
330
+
331
+ var _this = this;
332
+
333
+
334
+
335
+ var $el = $(this.newContainer);
336
+
337
+ window.scrollTo(0, 0);
338
+
339
+ $(this.oldContainer).hide();
340
+
341
+ $el.css({
342
+
343
+ visibility: 'visible',
344
+
345
+ opacity: 0
346
+
347
+ });
348
+
349
+ switchInAnimation();
350
+
351
+ $el.animate({
352
+
353
+ opacity: 1
354
+
355
+ }, 400, function () {
356
+
357
+ _this.done();
358
+
359
+ });
360
+
361
+ }
362
+
363
+ }); //barba transition
364
+
365
+
366
+
367
+ Barba.Pjax.getTransition = function () {
368
+
369
+ return PageTransition;
370
+
371
+ };
372
+
373
+
374
+
375
+ $(".change-animation").on('animationend webkitAnimationEnd',function(){
376
+
377
+ if ($('html').hasClass('is-close')) {
378
+
379
+ $('html').removeClass('is-close');
380
+
381
+ }
382
+
383
+ });
384
+
385
+
386
+
387
+ //上記はPjaxを適用させるにあたって導入している「Barba.JS」の設定の記述のようです。
388
+
389
+  //こちらをご覧になって何かおわかりになりますでしょうか?
390
+
49
391
  ```
50
392
 
51
393
 
52
394
 
395
+ ```PHP
396
+
397
+ function zoomSlide_func(){
398
+
399
+ ob_start(); ?>
400
+
401
+ <div id="demo-1" data-zs-src='[
402
+
403
+ "<?php echo get_stylesheet_directory_uri() ?>/images/top_slide-1.jpg", "<?php echo get_stylesheet_directory_uri() ?>/images/top_slide-2.jpg", "<?php echo get_stylesheet_directory_uri() ?>/images/top_slide-3.jpg", "<?php echo get_stylesheet_directory_uri() ?>/images/top_slide-4.jpg", "<?php echo get_stylesheet_directory_uri() ?>/images/top_slide-5.jpg"]' data-zs-speed="5000" data-zs-bullets="false" data-zs-overlay="false" data-zs-autoplay="true">
404
+
405
+ <div class="inner-content">
406
+
407
+ <p class="/*   */">/* スライダーの上の文章 */</p>
408
+
409
+ </div>
410
+
411
+ </div>
412
+
413
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
414
+
415
+ <script src="   /* modernizr-custom.js を読み込み */   "></script>
416
+
417
+ <script src="   /* jquery.zoomslider.min.js を読み込み*/   "></script>
418
+
419
+ <?php
420
+
421
+ return ob_get_clean();
422
+
423
+ }
424
+
425
+ add_shortcode('zoomSlide', 'zoomSlide_func');
426
+
427
+ ?>
428
+
429
+ //functions.phpに記載の、ショートコードを作成するPHPコード
430
+
431
+ // 「[zoomSlide]」をWordPresのビジュアルエディターに貼り付け、以下の画像のようにブラウザ上で反映
432
+
53
433
  ```
54
434
 
55
435
 
56
436
 
437
+ ![TOPページのHTMLのスクリーンショット](e219210712112abe636c8c98aaca85f4.jpeg)
438
+
439
+
440
+
57
441
  ### 試したこと
58
442
 
59
443