• ベストアンサー

ie8 javascript submitできず

ie8で、javascriptを使ってsubmit()しファイルをアップロードしようと思ったのですが、Webサーバがまったく反応しません。Firefoxとchromeでなんの問題もなかったのでIE8固有の問題だと思うのですが、解決された方はいますでしょうか?手がかりが記載されているサイトでもいいので教えてください。 ちなみにhttp://support.microsoft.com/kb/890981/jaで問題になっている相対パスは入れていません。IE8が出力したファイルパスをそのまま使用しています。

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

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

JavaScriptを使って<input>に文字列を入力し、そのままform.submit()してるんでしょうか? その方法はセキュリティーホールとなる可能性が高く、各ブラウザが<input>への入力を制限するなどし、 それにより、form.submit()は<input>が空のまま送信されるということがありました。 FirefoxやChromeは頻繁にアップデートされ、その度にセキュリティー関係のチェック方法が変わっていますから、 以前は送信できなかったものが送信できるようになった、ということがあるかもしれません。 <form 略 target="iframe"> <input type="file" name="file"> <input type="submit" value="submit"> </form> <script> document.forms[0].file.value='c:\セキュリティーや個人情報に関するファイルパスを推測したもの; document.forms[0].submit(); </script> IE8はこの制限を引き続きかけているなら、送信できないことが正しい動作になると思います。 <input type="file">のファイル選択ダイアログから選択すれば、相対パスが入力されるということはありませんから、正常に送信できると思います。 ご参考まで。

gothfotu
質問者

お礼

回答ありがとうございます。 ご指摘のとおりie8の仕様でファイルパスが自動で書き換えられて死んでいたようです。 参考 http://msdn.microsoft.com/en-us/library/ms535128%28VS.85%29.aspx http://scripting.cocolog-nifty.com/blog/2009/05/ie8valuecfakepa.html 上記参考サイトからie8の設定を変えて、確かにvalue値は絶対パスが入るようになったものの、フォーム上の変数値は全てwebサーバ側(PHP)で確認できるのですが、今度はwebサーバ(PHP)にファイルデータが送られてこない状況に陥っています。 何か気になることがあったら引き続きヒントを頂ければと思います。

その他の回答 (1)

  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.1

私も、IE8では色々苦労しています。 動作をデモできる、簡単なHTMLを提出できないなら、 アドバイスを貰うのは、難しいのでは。 言葉だけでは、実際どこがどうなのか解らない。 1つアドバイスできるとすれば、デバッグはしてみたのでですか? alertを使った原始的な方法や、Firebugによる方法など。

gothfotu
質問者

お礼

回答ありがとうございます。 動作をシンプルなデモ用意できればいいのですが、実際動かしているプログラムが煩雑で検証環境を提示できるような感じではなかったためヒントだけでも得られればと質問致しました。 後でわかったのですが、表示上では、C:\users\contoso\documents\file.txtと絶対パスが付されていたため、絶対パスだよなと、value値調べなかったのですが、value値を調べると、c:\fakepath\file.txtと書き換えられていました。これはどうやらie8の仕様らしく、 参考 http://msdn.microsoft.com/en-us/library/ms535128%28VS.85%29.aspx http://scripting.cocolog-nifty.com/blog/2009/05/ie8valuecfakepa.html ie8側で[インターネットオプション][セキュリティ][インターネット][レベルのカストマイズ]「サーバにファイルをアップロードするときにローカルディレクトリのパスを含める」 を「有効にする」。をやってみたのですが、 確かにvalue値は絶対パスが入るようになったものの、今度はwebサーバ(PHP)にファイルデータが送られてきません。 送った変数値は全てwebサーバ側(PHP)で確認できるのですが、ファイルデータに関して$_FILES['Upload']['tmp_name']を調べても何もありません。今はここまで詰まっている状態です。

関連するQ&A

  • Firefox:JavaScriptのsubmit

    JavaScriptで、以下のようにsubmitしていますが、 IEではOKで、Firefoxでは「送信開始」ボタンで反応がありません。 Firefoxではどのように書けばよいのでしょうか? 以下は、テストのため省略できるギリギリまで省略していますので、意味のないスクリプトになってますが、実際にはJavaScriptで空白個所のチェックのロジックを入れています。 <html> <head> <script language="JavaScript"> <!-- function check1(){ document.FORM1.submit(); } ---> </script> </head> <form action='http://hogehoge.jp' method='post' name="FORM1"> <input type='button' value='送信開始' onClick="check1()"> </form> </body> </html>

  • IEだけJavaScriptエラーが起こります

    JavaScript初心者です。 下記のサイトを参考にしてJavaScriptでロールオーバーを入れました。 http://css-happylife.com/log/javascript/000157.shtml firefox、chromeでは問題なく動くのですが、IEだけが 'getAttribute(...)' is null or not an object というエラーが起こります。 いろいろ調べたのですが、全く同じソースを使っているのに、他のサイトやサンプルサイトではエラーが出ていません。 他にjavascriptを入れているとか、ソースを挿入する場所とかでエラーが起こったりするのでしょうか?? よろしくおねがいします。

  • javascriptでのパスについて

    javaScript初心者です。 firefox3.5を使っています。 最近、プログラムを組んでいたのですが 絶対パスや相対パスをあまり意識しないでプログラムを書いていました。 プログラム中では document.getElementById(a).src = "画像.jpg"; のように代入していたのですが ふと絶対パスや相対パスはどうなっているのだろうと不安になり alert(document.getElementById(a).src); のようにalertで表示させてみると絶対パスが入っていることがわかりました。 インターネットで検索してみたところIEでは どうやらバグとして認知されているようなのですが (参考:http://css-bug.jp/win/ie/ver6_under/0043/)、 FireFoxでも同じようなことがあるのですか? 中で変換されているのでしょうか? どういった仕組みになっているのか教えてください。 そして相対パスと比較を行うときにはどのように比較することができるでしょうか。 いまはファイルの文字数がはっきりしているのでfor文の中で document.getElementById(i).src.slice(-9) == file + i + ".jpg" のように行っていますが、もっとよい方法がありますか? 初歩的な質問かもしれませんがよろしくお願いします。

  • JavaScriptのsubmit()がされない

    お世話になります。 現在JAVAで開発を行っています。 原因不明の問題が出たので質問させていただきます。 アップロードを子画面に任せたのもを実装しました。 処理の流れは、 1 親ページから子ページを開く。 2 子ページで画像を選びアップする。 3 画像確認画面が開く。 4 期待する画像の場合は、OKボタンを押す。 5 子画面は閉まる。 4の時に正しくsubmitできていない可能性があります。 確認画面の処理 function hogehoge() { window.opener.form.gazou.src = "hogehoge/test.jpg" //1 window.opener.form.gazou.width = "100"; //2 window.opener.form.gazou.height = "100" //3 document.form.flag.value = "true"; //4 window.document.form.submit(); //5 window.close(); //6 } <input type=button name=button1 value=" OK " onClick="hogehoge();"> 1.2.3.6は実際に画面で挙動が確認できるため問題ないと思います。 4.5に関してはJAVAの方のログで確認できる場合と確認できない場合があります。 submitされているならログにはかれているはずなのですが、 はかれていない場合があり、このとき何らかの理由でsubmitが行われていないのではないかと考えています。 IEのバグでwindow.close時にセッションが切れるというバグがあるのを確認致しましたが この可能性があるかもしれません。 どなたか解る方ご教授お願い致します。

    • ベストアンサー
    • Java
  • ローカル環境で動作しないJavaScriptについ

    ちょっと気になったので質問させてください。 ↓こちらのページ等を参考にさせていただきながら、フォントサイズを変更できるサイトを制作しています。 http://web-mugen.com/javascript/jquerynochangecssfontsizechange/ ファイルはすべてローカルに保存し、相対パスで読み込んで作業しています。 ところがGoogle Chromeでのみ、ローカル環境でブラウザ確認してみると、フォントサイズが変わらなかったのです。 試しに似たようなプラグインを他にもいくつか試してみましたが、全部同じ結果でした。 が、悶々としたままテストサーバーへアップすると問題なく動いてくれました。 以前も何かのプラグインで同じようなことが、確かIEやFireFoxでも動かなかったことがあった気がします。 最終的に解決したので良いのですが、理由が気になります。 JavaScriptは全てローカルでも動作するものではないのでしょうか。 原因をご存知の方いらっしゃいましたら教えていただけませんか。

  • JavaScriptが動きません

    下記のようなJavaScriptを作りましたが、IE8ではボタンを押しても「ようこそJavaScriptへ」が表示されません。 「F12 Web開発者ツール」というのをチョッとイジったのですが、その為ではないかと思います。 どこをどうイジったか覚えてません。 どうすれば動作するようになるでしょうか、教えてください。 動作状況  サーバーに置いてアクセスした場合は、「FireFox」「IE8」とも表示される。  ローカルデスクに置いてアクセスした場合は、「FireFox」では表示される、「IE8」では表示されない。 ☆OSはWindowsXP。 ☆IE8のセキュリティ設定で「アクティブスクリプト」は「有効にする」になってます。 ------JavaScript----------- <HTML> <BODY> <FORM> <P> <INPUT TYPE="submit" VALUE="ここを押すとメッセージが表示されます" ONCLICK="HelloWorld()"> </FORM> </BODY> </HTML> <SCRIPT LANGUAGE="JavaScript"> <!--Hide script from no-JavaScript browsers function HelloWorld() { alert("ようこそJavaScriptへ"); } //--> </SCRIPT>

  • IE7での画像アップロードが出来ません

    最近vistaを購入しIE7を使っているのですが、mixi等のブログでブラウザ上で画像をアップロードすることができません。 以前までwinXp(IE6)を使用してましたが、問題なくアップロードできてました。 色々と試してみましたが(フォルダに日本語が含まれていないか等)改善されません。 ファイルそのものは50KBと大きくはないもので、拡張子はちゃんと.jpgになってます。 ちなみに、vistaにFireFoxを入れて試したらアップロードできました。 IE7でやるには何か設定がいるんでしょうか?

  • MSのUPDATE後にIEが起動できない

    今朝、下記の14個のMicrosoftのUPDATEを実行しました。 KB2310138 KB2656368 KB890830 KB2667402 KB2686827 KB2709630 KB2709715 KB2709162 KB2685939 KB2699779 KB2677070 KB982726 KB2656373 KB2699988 エラーも吐かず来歴でも成功と表示されていますが、Internet Explorerにつながらなくなりました。 (UPDATE前は問題なくIE起動できていましたがUPDATE後にIEを起動させても応答しない状態がつづく) メールやGOOGLE CHROMEは問題なく接続できています。 (投稿は、Chromeで行いました) 復元してどのUPDATEが問題なのか !! 特定するには一つ一つUPDATEして試すしか方法はありませんか? このような場合、試すべき処置(方法)があればご指導ください。

  • IEやクロムはFirefoxと比べて遅くないですか

    自分の環境だと10個以上タブを開いたとき、IEは見たいタブをクリックしてもすぐにはそのタブに切り替わらず中身のページも真っ白、少し時間を置いてクリックしたらようやく表示なことが多いです。Chromeも同じでたくさんタブを開いたときはなかなか見られる状態になりません。firefoxはどれだけタブを開いても中のページはちゃんと瞬間的に表示されてますしタブを切り替わるのは一瞬です。例外的に、動画の多いページだとfirefoxはIEと比べて動作が遅く重くCPU利用率もIE利用時と比べて高くなります。 ネットで公開されてるベンチマークではIEやChromeはfirefoxより高いスコアを出して高い評価を得ているパターンが多いです。 タブの切り替えに時間がかかるというトラブルは他の環境では再現されないこのPC固有の問題でしょうか?皆さんのPCではIEやchromeはfirefoxより軽いんでしょうか。教えてください。

  • 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();}

専門家に質問してみよう