• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Firefox で動くプログラムがIEでは動かない)

Firefoxで動くプログラムがIEでは動かない

このQ&Aのポイント
  • Firefoxで動作するプログラムがInternet Explorerでは正しく動作しない問題が発生しています。
  • 特に、File名が渡されずに"Object not found"というエラーメッセージが表示されます。
  • この問題を解決する方法を教えていただけないでしょうか?

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

  • ベストアンサー
回答No.1

PHPに値が正常に受け渡しされていないのではないでしょうか。 Javascript部分が、IEでは引けないプロパティを参照してたりする可能性はあると思います。 window.document.getElementById("dfform").deleteFileName.value= fname[1]; の部分を、 window.document.forms[1].deleteFileName.value=fname[1]; と、引きなおしてみてはいかがでしょうか。

papashiro
質問者

お礼

ご回答ありがとうございます。 ご指摘のように、 getElementById() を forms[1], さらに そのフォーム内の入力要素ある deleteFileName , status を elements[0], elements[1] にしてやってみましたら、ファイルは希望どうりに削除することができました。 しかし status の値は渡されてないようで、呼ぶ出された側のphpプログラムはうまく動作しません。 $deleteFileName=$_POST["deleteFileName"]; $gameClear=trim($_POST["status"]); echo $deleteFileName."</br>"; echo $gameClear."</br>"; としてみても、どちらも表示されませんし、エラーメッセージも前と同じです。 ほかに何か考えられる原因があるのでしょうか? papashiro

その他の回答 (2)

回答No.3

遅くなってしまいましたが、 本件、状況が少し分かりづらく、また、PHP側に問題があるように思われませんので、平行して、Javascriptのカテゴリーでも質問してみたほうが良いかもしれません。 また、質問者さんが問題と思って記述している部分以外のところで問題が出てる可能性も否定できないと思います。 一度、スクリプトをシンプルにしたものを作成して、テストをしてみるというのはいかがですか? 今回の問題である、特定の名前のhiddenが正常に渡せないのであれば、 フォームにそのhiddenのみを置いて、 Javascriptに関しても、そこの書き換えだけを行ってみる。(value = 変数値ではなくて、value = "hogehoge"などと記述してみる)

papashiro
質問者

お礼

ご回答に対する返事が遅くなって、大変申し訳なく思っております。 この件は、やはりhogehogeさんのおっしゃるとおり、別の部分でミスを犯していました。つまり問題のhtmlページからPHPページに移る際に、 <body ....... onunload="gameOver()"> としてあったのですが、 この gameOver()関数は途中で一度書き換えて引数を必要とする形にしてあり、そのことを忘れていたのです。 したがってここを訂正することで問題は解決し、Internet Explorer でもちゃんと動くようになりました。 いろいろ煩わせてしまって、ご迷惑をおかけしました。 ご協力に感謝いたします。 papashiro

回答No.2

statusが渡されていないということであれば、statusというname値を、別のものに変えてみたら何か状況変わりますか?(name="fileStatus"にするとか) 既存のプロパティと名前がバッティングしたりするとエラーが出るということはあると思うので一度少し長めの名前にしてみると良いかもしれません。 また、 document.forms[1].elements[0].value などとしても引けますし、 formにname値を入れているのであれば、 document.forms['dfform'].elements['deleteFileName'].value などと引くことも出来るので、明示的に取得するなら後者で記述して試してみてください。 また、Javascriptの正しいデバッグ方法は分かりませんが、 document.forms[1].submit(); これを叩く前の段階で、 alert(document.forms[1].elements[0].value)などとして、値が書き換わったり定義した値がポップアップされたりするか確認してみてください。 さらに、InternetExplorerの詳細設定で、「スクリプトのデバッグを行わない」(だったかな・・・)にチェックが入ってませんか? これのチェックをはずして再度チャレンジしてみて頂くと、構文エラーがあった場合などに、ある程度ポップアップで教えてくれると思います。

papashiro
質問者

お礼

ご指摘のように、form 内の name 値を変えてやってみました。 また、window.document.forms["dfform"].elements["gameStatus"].value=st として フォーム内の要素を明示してやっても見ましたが、fire fox ではちゃんと動いて、Internet Explorer では動かないという状況は変わりませんでした。 また JavaScript 部分で alert() を使ってphpに渡したい値を表示させて見ましたが、削除したいファイルの名前も、状況を表す値もちゃんと alert ボックスに表示されます。 ただひとつおかしなことは、alert box に表示された後、 ok ボタンを押すともう一度 alert box が現れ、そこには undefined と表示されています。これは fire fox で走らせた時にも起こります。 このあたりに何か問題解決のヒントでもないでしょうか? また「スクリプトのデバッグを使用しない」のチェックボックスのチェックをはずしてみましたが、ポップアップなどは出ませんでした。 また何かヒントになるようなことをご存知でしたら、教えていただけるとありがたいです。 papashiro

関連するQ&A

専門家に質問してみよう