質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

1152閲覧

WordPressのテーマ affinger4で JavaScriptが勝手に改変される

shishishi

総合スコア33

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/08/05 00:47

編集2017/08/05 00:49

WordPressのテーマ affinger4に JavaScriptを追加するカスタマイズをしています。
その際、 JavaScriptが勝手に改変されるため、JavaScriptが動作しなくなります。
・JavaScriptが改変されるのを止める
・改変されても動作するようにする
にはどうすればいいでしょうか?

下記のテーブルソーターと言われる、表の情報を JavaScriptを使ってソートする、と言う機能の実装をしています。
http://tablesorter.com/docs/

javascript

1<script type="text/javascript" src="<?php echo esc_url( get_stylesheet_directory_uri() ) ; ?>/js/jquery-latest.js"></script> 2<script type="text/javascript" src="<?php echo esc_url( get_stylesheet_directory_uri() ) ; ?>/js/jquery.tablesorter.min.js"></script> 3 4<script> 5$(document).ready(function() 6 { 7 $("#myTable").tablesorter(); 8 } 9); 10</script> 11

をテンプレート(single-type1.php)に編集しています。
ですが、実際に出力されるソースは、下記の様になります。

javascript

1<script pagespeed_orig_type="text/javascript" src="https://example.com/wp-content/themes/affinger4/js/jquery-latest.js" type="text/psajs" orig_index="14"></script> 2<script pagespeed_orig_type="text/javascript" src="https://example.com/wp-content/themes/affinger4/js/jquery.tablesorter.min.js" type="text/psajs" orig_index="15"></script> 3 4<script type="text/psajs" orig_index="16">$(document).ready(function() 5{$("#myTable").tablesorter();});</script>

出力される htmlファイルをローカルに保存し、JavaScriptのソースコードを改変される前のものに編集し直すと正しく動作しますので、JavaScriptが改変されることが動作しない原因であろうと考えています。

ちなみに、投稿画面にある「hedaに出力するコード※エスケープ処理されません」と書いてあるところに入力しても同様に改変されてしまいます。

また、テーブルのソートができればいいため、このテーブルソーターではなく、他のスクリプトを利用する方法でも全く問題はありません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

mod_pagespeed

mod_pagespeed を導入していませんか。
「mod_pagespeed のバージョンアップで改善されるかも」という情報がありました。
バージョンアップで改善が見られないのであれば、mod_pagespeed を外してみて下さい。

<script type="text/psajs">

mod_pagespeed の公式サイトでは、次のように説明されています。

defer_javascript tries to defer JavaScript execution until page load. It defers this by changing the type and src attributes of <script> elements on the HTML page to data-pagespeed-orig-type and data-pagespeed-orig-src respectively. It also adds a new type attribute whose value is set to text/psajs. A window.onload handler is added to the HTML, which executes all the deferred scripts.

機械翻訳「defer_javascriptはページが読み込まれるまでJavaScriptの実行を延期しようとします。 HTMLページの<script>要素のtype属性とsrc属性をそれぞれdata-pages-peed-orig-typeとdata-pages-peed-orig-srcに変更することでこれを延期します。また、値がtext/psajsに設定された新しいtype属性を追加します。 window.onloadハンドラがHTMLに追加され、すべての遅延スクリプトが実行されます。」

mod_pagespeed はscript要素に無効な値「type="text/psajs"」を付与してスクリプトの実行を延期し、window.onload ハンドラによって、遅延されたスクリプトを元に戻して遅延実行しようとします。
挙動を伺うに、遅延されたスクリプトを元に戻す処理が正常に働いていないのでしょう。

Re: shishishi さん

投稿2017/08/05 01:34

think49

総合スコア18162

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

think49

2017/08/05 01:37

すみません。回答を書いている最中に投稿が寄せられたようで重複しました。
shishishi

2017/08/05 01:57

回答ありがとうございます。 「mod_pagespeed」を OFFにして見ましたが、上手く動作しませんでした。 ですが、表示されている HTMLのソースコードをそのままローカルにファイルとして保存して、それを表示させると正しく処理されます。 ただ、ロードされるまでの時間がかかるのか、動作するようになるまでブラウザの faviconのところがぐるぐる回っています。 これはどういう状況なのか、分かりますでしょうか?
guest

0

スクリプトが改編される理由は、affingerの問題ではなく、X-Serverの mod_pagespeed設定を ONにしていることが原因でした。
ただ、テーブルソーターはまだ動いていませんが...

投稿2017/08/05 01:13

shishishi

総合スコア33

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問