WordPressの管理画面(wp-admin.php)でJavascriptがエラーになりAJAXによる編集機能が効かない。
by
yjdさん
(d593027a)
投稿数:0回
(ベストアンサー:0回)
(ベストアンサー:0回)
2015/03/31 19:57
表題が発生し、管理画面より投稿ができないなどの現象が発生しました。
回避策が見つかったので報告します。
■環境:WordPress4.1.1 (プラグインやテーマにも依存するかもしれません。)
■原因
/wp-admin/load-scripts.phpにてJavascriptが読み込まれるが、それに展開される、/wp-includes/js/mce-view.min.jsの文字列リテラルの部分に、広告の<script>タグが挿入される。
その挿入される文字列に改行が含まれるため、Javascriptがパースエラーになる。
■対策:/wp-includes/js/mce-view.min.jsの、広告が挿入される<body>の'>'の前に、/* > */などといれて、パースエラーにならないコメント内部に広告が展開されるようにする。
<body id="wpview-iframe-sandbox" class="'+p+ /* > */'">'+c+"</body>
※text/htmlにて上のような広告のブロックをするのは規約違反ですが、wp-admin.phpですでに広告が表示されており、上記のようなapplication/x-javascriptの場合に正常動作するように対策するのは致し方ないと考えます。
■その他
システムの側で、Content-typeがtext/htmlの場合のみ広告が挿入されるように対処して欲しいところです。(JavascriptのほかにJSONでも不具合がおこりそうですので。)
以上。
回避策が見つかったので報告します。
■環境:WordPress4.1.1 (プラグインやテーマにも依存するかもしれません。)
■原因
/wp-admin/load-scripts.phpにてJavascriptが読み込まれるが、それに展開される、/wp-includes/js/mce-view.min.jsの文字列リテラルの部分に、広告の<script>タグが挿入される。
その挿入される文字列に改行が含まれるため、Javascriptがパースエラーになる。
■対策:/wp-includes/js/mce-view.min.jsの、広告が挿入される<body>の'>'の前に、/* > */などといれて、パースエラーにならないコメント内部に広告が展開されるようにする。
<body id="wpview-iframe-sandbox" class="'+p+ /* > */'">'+c+"</body>
※text/htmlにて上のような広告のブロックをするのは規約違反ですが、wp-admin.phpですでに広告が表示されており、上記のようなapplication/x-javascriptの場合に正常動作するように対策するのは致し方ないと考えます。
■その他
システムの側で、Content-typeがtext/htmlの場合のみ広告が挿入されるように対処して欲しいところです。(JavascriptのほかにJSONでも不具合がおこりそうですので。)
以上。