はじめに
アメバのタイトル入力などで、急に入力文字を削除したりできなくなりました。何か異常が発生しています。てっきりIMEの問題なのかなと、その周辺を調べてみましたが、特に異常は見つかりませんでした。
何が原因で、テキスト入力がおかしくなったのかがわからず、四苦八苦していました。
DeleteキーやBackSpaceキーでテキストを削除できず、文字列を選択すると、yahooの検索が起動してしまいます。選択した文字列の検索に飛んで行ってしまいます。
これには、非常に困りました。何をやっても、Yahoo検索に行ってしまいます。
動作テスト
異常動作を起こす原因を探すため、いろいろなケースで試してみました。一度、すべてをリセットしてはじめからやり直してみました。その時は問題もなく、動作しています。何かのタイミングで異常動作に入るようです。
どのようなときに再現するのかがわかりません。何らかの動作をしたときに発生するようですが、そのきっかけがつかめません。
ある時、再び、発生しました。何かしているうちに、何かのきっかけで起こるらしいということはわかりました。
しかし、まだ、再現するきっかけがみつかりません。
その時、もしかしたらと思い、作成してテストしていたプラグインをすべて削除してみました。そこで、テストしてみると異常は発生しません。その異常というのは、アメバのタイトル入力時のDeleteキーとBackSpaceキーの入力やテキスト入力でひらがなやアルファベットを入力するときです。
それらの操作は正常にできました。
それで、やっと気がつきました。どうもプラグインがIMEの誤動作に関係しているのかと。
何らかの異常動作の原因は
それらは、自分の作成したプログラムが原因かと、理解しました。他のプログラムやシステムを疑う前にまず、自分のプログラムを疑うことが先決だということを理解しました。
つい、他を疑ってしまい勝ちですが、それは間違いだと気が付きました。
今、作成中のプラグインは
Webプレーヤーとアメバyoutube検索との連携プラグインを作成しています。どうもこれが原因しているのかと思っています。これから、その辺をよく、調べてみようと思います。
テキスト入力あたりで不具合がありそうだということはわかりましたので、キーボードのキーやコントロールキーのイベント処理あたりを中心に調べる予定です。
今の時点で考えられることは
直接的な原因はなんなのかは、今の時点では想像もできませんが、少し、落ち着いて考えてみたいと思います。
不具合は、入力フィールドで、入力した文字列に対して、DeleteキーやBackSpaceキーが効かず、文字を削除できないことです。また、文字列を選択状態にするとyahoo検索に飛んで行ってしまうことです。やりたいことは選択状態にしてから、一挙にDeleteキーで削除したいのですがこれができません。
これらの動作に対して、プラグインの何らかの処理が悪さをしているようです。プラグインを外すと正常に動作するため、明らかにプラグインの問題だと認識しています。
ここで、DeleteキーやBackSpaceキーを押し下げたときに、プラグインのkeydownイベントが入って、そこで誤動作していることが考えられます。確かに、プラグインで、keydownイベントやctrlKeyなどのクリックはチェックしています。次に、不具合が発生したときに、そのあたりにブレークポイントをはってデバッグしてみようと思います。次の再現を待ちたいと思います。
普通に、アメバでブログを書いているときは、プラグインがインストールしていても、正常にブログを書けています。ある時点で、タイトルを編集しようとすると、DeleteキーやBackSpaceキーが効かなくなるため、その不具合が発生するのを待ちたいです。そのある時点をキャッチすることが中々、できません。再現性がないのです。
あとがき
まだ、根本の原因はわかりませんが、とりあえず、異常動作のおおもとの原因はみつかりましたので、これから、さらに調べて行くつもりです。
その後
原因らしきものがみつかりました。
再現性もありました。実は、プラグインを2つ入れていまして、一つ目の時は問題なく動作していました。そして、2つ目をインストールしたら、ブログのタイトルで、再現しました。ブログの本体部では、問題は発生しません。なぜ、タイトルのところで異常が発生するかについては、まだ原因を特定できていません。
そして、その原因ですが、ふたつ目のプラグインで、
$("body").on('keydown', function (e) {
..
..
return false;
});
このスクリプトで、return false;としていたところを、コメントにしたところ、正常に動作しました。
ここで、return false;としてしまうと、それ以降のkeydownイベントが入らず、異常が発生していたようです。
諸悪の根源は、これでした。いろいろ、IMEや他の不具合を疑っていましたが、灯台もと暗しでした。
やたらに、return false;は使わない方がいいみたいです。
あとがき その2
やはり、プラグインは難しいです。プラグインが悪さをしているケースは、結構多いと思います。検証が十分されていないと使うことはできません。プラグインは便利ですので、必要な時のみにしておき、必要ないときは、外しておくべきです。