FirefoxでのcharacterSet変更

このQ&Aのポイント
  • FirefoxのJavaScriptにかぎって「document.characterSet」による取得以外の機能が見つかりません。
  • 某ホームページには「document.characterSet='EUC-JP'」ができると記述があるのですが実際やってみるとスクリプトの実行が停止してJavaScriptコンソールには「getter only(取得のみ)」とエラー表示されています。
  • Firefoxでこのような問題を解決した方がいらっしゃいましたらご教授お願いいたします。
回答を見る
  • ベストアンサー

FirefoxでのcharacterSet変更

IE,Chrome,Safari,Operaなどの現行バージョンのブラウザ上では 「document.charset」にてキャラクタセットを取得したり設定したりと双方向に働きますが FirefoxのJavaScriptにかぎって「document.characterSet」による取得以外の機能が見つかりません。 某ホームページには「document.characterSet='EUC-JP'」ができると記述があるのですが実際やってみるとスクリプトの実行が停止してJavaScriptコンソールには「getter only(取得のみ)」とエラー表示されています。 EUCコード限定のcgiに対してAjaxを利用したページ(utf-8)から日本語のデータをSUBMITするために この機能で実現できると思ったのですがFirefoxだけがネックになっております。 Firefoxでこのような問題を解決した方がいらっしゃいましたらご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

回答がないみたいなので… javascriptでやらなくても、別のcgiで受け取って文字コード変換してから渡してやるとか… (大抵ライブラリがあるでしょうから。) わざわざ別のcgiにしなくても、そのものを修正できるのならそれにこしたことはありませんが。 いずれにしろ、サーバ側で対処するのがまっとうな方法のような気がします。 どうしてもjavascriptでやるとしても、スクリプトがオフの場合はどうするとか問題は残るでしょう。 というのは置いておいて… (ちゃんと検証はしていませんので、確認してください) ◇ご質問とほぼ同様の方法  http://search.web-sun.com/zatu/charset.html ◇javascriptで文字コード変換を行う方法  http://felix-labo.jp/pukiwiki/?JavaScript%2F%E5%82%99%E5%BF%98%E9%8C%B2%2F%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89%E5%A4%89%E6%8F%9B  http://perl.g.hatena.ne.jp/tetsu23/20060228/p1

ralf124c
質問者

お礼

アドバイスありがとうございます。 たしかにおっしゃる通り、CGIを間にかますと簡単な話なんですが、そのCGI自体がページとしてカウントされるため、ブラウザの「戻る」ボタンがページ遷移的にどうしても気になってしまいます。 もしかしたらエンコードすればいけるんじゃないかとやってみたらサブミット時点で再エンコードされてPOSTされるデータがエンコード状態・・・やってみなくても当たり前のことなんですが一縷の望みとやってみました。 ecl.jsも実は試してみたのですが、処理がそのページで完結表示なら使えたんですが、別ページにPOSTするとなると化け化けになってしまいあきらめていました。ハテナの参考リンクをみたら別のやり方があったのですね。 「ご質問とほぼ同様の方法」もたいへん参考になります。後半部分は現状困っている部分ですが、前半部分は試していないのでこれから試してみます。 どうもありがとうございました。

ralf124c
質問者

補足

先にお礼を記入してしまいましたのでこちらで最終結果を記入させていただきます。 リンク先のヒントを参考に試行錯誤した結果、今回の問題に関して理想的な解決法が見つかりました。 後々のために記録として解決策のサンプルを入れておきます。 -----ここから if((navigator.userAgent.indexOf("Firefox",0) > -1)||(navigator.userAgent.indexOf("Netscape",0) > -1)){ document.f.acceptCharset = 'euc-jp'; document.f.submit(); }else{ document.charset='euc-jp'; document.f.submit(); document.charset='utf-8'; } -----ここまで FirefoxはNetscapeのJavaScriptエンジンをいまだ引きずっているようでNetscape7.1も同じ対策でOKでした。 Fijillinさんの的確なアドバイスのおかげでたいへん助かりました。

関連するQ&A

  • JavaScriptで変更されたくない変数(定数)の書き方

    Javascriptで、変更されたくない変数(定数)を使いたいのですが、どうすれば良いのでしょうか? IE,FireFoxの両方で可能な方法が知りたいです。 できれば、Opera,Safari,Chromeも使えたら・・・ 無理でしょうか?

  • Javascriptで各ブラウザを厳密に区別する方法

    JsvascriptでIE,FireFox,Safari,Opera,Chromeのそれぞれのブラウザを厳密に区別する方法が知りたいです。 それが困難な場合はIE/FireFoxとその他のブラウザを区別する方法がわかれば構いません。 最近Javascriptを触っていませんが2008年後半から今までで何かJavascriptで変化したことはあるのでしょうか? 2007年はAjaxというものが出てきましたが、その後 目新しいものがあったでしょうか?それとも今は減少中?

  • 【javascript クロスブラウザ】処理中はカーソルを砂時計にしたい

    漠然とした言い方ですが、javascript実行中はカーソルを砂時計にしたいです。 すごく具体的な例を示すと、new Ajax.Request実行直前にカーソルを 砂時計に、onSuccessに指定したfancitonの最後でカーソルを デフォルトに戻したいです。 基本的な動作を検証するhtmlを書いてみました。 <html> <head> <style> <!-- div { height: 100%; width: 100%; } --> </style> <script type="text/javascript"><!-- function pleaseWait(){ document.body.style.cursor = 'wait'; setTimeout(function(){document.body.style.cursor = 'default';},2000); } //--></script> <head/> <body> <div onmousedown="pleaseWait();"> </div> </body> </html> windows環境で、IE6,FireFox3,Opera9,Safari(3.2.1),Google Chrome で試してみました。ブラウザ毎の結果を以下に記します。 ■IE,FireFox クリック後、2秒間は砂時計のカーソルになり、 その後元に戻りました。(これが期待している動作です。) ■Opera なんの反応もありませんでした。 ■Safari,Google Chrome クリック後、砂時計になり、マウスを動かさなければ砂時計のまま。 マウスを動かせば、元に戻る。 opera,Safariでも期待した結果を得るにはどうしたら良いでしょうか? 名案ありましたら教えてください。

  • javascriptがFirefoxで効かない

    いつもお世話になります。 見よう見まねでやっている初心者です。 下記のようなボタン2個とjavascript でpostする先をわけようと思っているのですが、 IEですと動くのですが、FirefoxとGoogle Chrome では全く動きません。 これをFirefoxとGoogle Chromeでも動かせるのにはどう書けば宜しいのでしょうか? できたら具体的に式を書いて頂けると大変助かります。 どうかご教授の程よろしくお願い致します。 <input type="button" value="new" onclick= "test_new()"> <input type="button" value="edit" onclick= "test_edit()"> function test_new(){ var postform = document.getElementById("register"); postform.action = './test_new.php'; postform.submit();} function test_edit(){ var postform = document.getElementById("register"); postform.action = './test_edit.php'; postform.submit();}

  • firefoxやsafariへの対応。

    firefoxやsafariへの対応。 http://www.perl-labo.org/gocount/2/ 上記ページのJavascriptを利用したいのですが、 「ジャンプした回数はこちら。」のテスト用ページをクリックしても firefoxではカウントされません。 safariではundefinedがカウントされています。 OperaとIEでは正常にカウントされています。 ソース上には、if (window.XMLHttpRequest) { // Safari, Firefox など と記載されているので、safariやfirefoxにも対応していると思ったのですが、 別の部分のコードが対応していないのでしょうか? Perlは簡単な改造程度は書けるのですが、JavaScriptはまったく知識がないので、 safariやfirefoxに対応させる為にはどの部分を変更すればいいのかがわかりません。 各ブラウザのバージョンは最新にして、テストしました。 対応方法をご存知の方、どうぞよろしくお願いいたします。

  • opera safariを使っている人に質問です

    私はメインでchromeを使っています。後はfirefoxも結構使っています。 operaかsafariをメインで使っている人に質問です。 拡張機能が少ないと感じることはないですか? 又、出来ればメインで使っている理由があれば教えて頂けないでしょうか? opera safariを批判しているわけではなく出来れば使ってみたいと考えています。 (時々はつかいますが、あくまで個人的にですがあまり使いやすいとは感じていません)

  • Firefoxでjavascriptが効かない

    Firefox2.0をWinXPで使っています。 Yahooブログなどで使われている、たたまれたコメントを見る機能「javascript:get_comment_ajax」や「javascript:toggleTab」「javascript:toggleTab」などが効かなくてこまっています。 IEやFirefoxのIE TABなどを使うと間違いなく動作するのですが、Firefoxだと押しても無反応だったり何回も再読込したら動作するようになったり、しなかったりで何が原因なのか分からないのです。 自分だけの症状なのか、Firefox独自の症状なのか、それともYahooへ聞くべきことなのか…それすらも分からなくて困っています。 どうしたら毎回きちんと動作するようになりますか?

  • 質問です! Operaって、document.all使えるんですか?

    質問です! Operaって、document.all使えるんですか? javascript:alert(document.all)という風に入れたら、[object HTMLCollection]という値が返ってきました ちなみに、  Firefox3.6 : [object HTML document.all class] Netscape7 : undefined Safari (おそらく4) : Operaと同様。 document.allて、IEだけかと思っていましたが。

  • ほとんどのブラウザに対応したキーイベントのプログラムをJavascri

    ほとんどのブラウザに対応したキーイベントのプログラムをJavascriptで書きたいのですが、 IEではwindow.eventは使えましたがFireFoxなどでは定義されていないエラーになります。 ブラウザごとのキーイベントについて知りたいです。 IE,FireFox,Safari,Chrome,Opera,Netscape,Other

  • safari,firefoxでスタイルシートを使いたい。

    safari,firefoxでスタイルシートを使いたい。 お世話になっております。 link要素で、以下のような感じで、 ブラウザごとにスタイルシートを使い分けたいのですが、 どうもsafariとfirefoxは、link要素は認識してくれないようです。(opera、chromeは未確認) (私の勘違い?) safariとfirefoxは、スタイルシートのファイルを指定するのは、 どのようにするのでしょうか。 ご存知の方、ご教授ください。よろしくお願いします。 ↓----------------------- (OSの判定は省略) browser = getBrowserName(); if (browser == "Netscape") dirName = "macNsc.css"; if (browser == "Explorer") dirName = "winIE.css"; if (browser == "Safari") dirName = "macSaf.css"; : document.write("<link rel='stylesheet' href='"+dirName+"' type='text/css'>"); ↑-----------------------

専門家に質問してみよう