🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

2137閲覧

【jQuery】言語判定後の処理でIEだけフリーズしてしまう

Tetra00

総合スコア6

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

1クリップ

投稿2019/09/10 04:06

編集2019/09/10 05:05

発生している問題・実現したいこと

GTranslate(https://ja.wordpress.org/plugins/gtranslate/)で自動翻訳しているWordPressサイトにおいて、言語が切り替わった際にjQueryで特定のコンテンツを非表示にしています。

IE11(10以下は無視)以外のブラウザでは問題ないのですが、IE11だけ別の言語に切り替えた瞬間、対象のコンテンツは非表示になりますが、その後フリーズしてスクロールやクリックなど何もできなくなってしまいます。IE11でも正常に動作させたいです。

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4<meta charset="UTF-8"> 5<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 6<?php wp_head(); ?> 7</head> 8<body> 9<div id="wrap"> 10 <header> 11 <div class="inner"> 12 <div class="lang-wrap"> 13 <p>Language</p> 14 <div class="select-lang"> 15 <?php echo do_shortcode('[gtranslate]'); ?> 16 </div> 17 </div> 18 </div> 19 </header> 20 <div id="main"> 21 <div id="box1">BOX1</div> 22 <div class="box2">BOX2</div> 23 </div> 24 <footer> </footer> 25</div> 26<?php wp_footer(); ?> 27</body> 28</html>

jQuery

1jQuery(function($) { 2 $("#wrap").on('DOMSubtreeModified propertychange', function() { 3 var lang = $('html')[0].lang; 4 if(lang !== 'ja') { 5 $("#box1").hide(); 6 $(".box2").hide(); 7 } 8 }); 9});

試したこと

最初は "#wrap" の部分を "html" としていましたが、"html" だとIE11ではページを開いた瞬間からフリーズしてしまいました。
少し範囲を絞ってページ全体を覆っている "#wrap" にしてみたところ、自動翻訳しなければ普通にサイトをみれるようになりましたが、自動翻訳した瞬間にフリーズしてしまいます。

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

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

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

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

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

m.ts10806

2019/09/10 04:13

htmlではなくbodyだとどうでしょう。
Tetra00

2019/09/10 04:17

bodyでも試してみましたが、やはり処理後にフリーズしてしまいました。
m.ts10806

2019/09/10 04:23

フリーズと言うのがWindows的にな「応答なし(無限ループ含む)」という状態なのか 「操作はできるが何も起きてない」状態なのか どちらでしょうか? 念のため、再現するHTMLもご提示いただいて良いですか?
m.ts10806

2019/09/10 04:23

あと、言語切り替えてない時は問題ないですか?
Tetra00

2019/09/10 04:38

言語を切り替える前は何も問題ありません。 フリーズはIEの操作ができなくなるだけで、Windows自体は問題なく他のソフトなどは操作できます。
m.ts10806

2019/09/10 04:40

>フリーズはIEの操作ができなくなるだけ すみません。私の表現が悪かったです。IEの操作が全くできなくなるかどうかの確認でした。
kyoya0819

2019/09/10 05:09

フリーズするのって基本的にループ文等で負荷がかかってるかブラウザのバグかのどちらかですよね この場合、IE11のバグっていうのも視野に入れたほうがいいのでは?
Tetra00

2019/09/10 05:09

すみません。ブラウザのどこをクリックしても反応がない状態(戻るや閉じるなどすべて)で、Windows的な「応答なし」の状態ですね。
m.ts10806

2019/09/10 05:33

jQueryを独自に読み込まれてますがwp_head()でWordPressデフォルトが読み込まれたりしてませんか?jQueryがバッティングしているかもしれません。
Lhankor_Mhy

2019/09/10 06:10

デモサイト( https://ja.gtranslate.io/ ) を見てきましたが、言語を切り替えるとリロードが走っているようでした。 'DOMSubtreeModified propertychange' は不要のように思えるのですが、動的構成もあるのですか?
Tetra00

2019/09/10 06:27

m.ts10806様のおっしゃるようにWordPressのデフォルトを読み込まないようにしたら正常に動作しました! 未熟なのでIEだけ不具合が出た根本の原因はよく分かりませんが、ひとまず解決いたしました。ありがとうございます。
m.ts10806

2019/09/10 06:29

解決したのは良かったのですが、モヤっとしますね。 jQueryのバッティングはIEに限ったことではないはずなので。
Tetra00

2019/09/10 06:35

そうなんですよね。謎です。 m.ts10806様にベストアンサーをさしあげたいのですが、よければ回答欄にコメントしていただけますでしょうか。
m.ts10806

2019/09/10 06:37

いえいえ 私は単にWordPressだからありえるかな、確認してみて ということで「確認した結果を追記してもらいたい」ためのコメントなので ご自身で解決までの経緯を具体的に回答書かれて自己解決とすると良いです。 https://teratail.com/help#resolve-myself
guest

回答1

0

自己解決

WordPressのデフォルトjQueryを読み込ませないことで、IEでも正常に動作しました。

なぜIEだけに不具合が起きていたのかは不明ですが、ひとまず解決いたしました。
コメントいただいた皆様ありがとうございました。

投稿2019/09/10 07:03

Tetra00

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問