- ベストアンサー
Image:FirefoxとSafariで動作するように書き換えてください
個人的に興味があるので質問させていただきます。 少し前に http://oshiete1.goo.ne.jp/qa3102596.html という質問に回答したところ, IEとOperaで動作確認した状態で締め切られてしまいました。 さて,FirefoxとSafariで動作させるにはどのようなコードにしたらよかったのでしょう? (共にimage.srcを設定した後,image.widthやimage.heightが0として出力される)
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 単純にローカルファイルを貼り付けた<img>の画像URLを調べると… IE file:///ドライブ文字:/パス/ファイル名 Firefox file:///ドライブ文字%3A/パス/ファイル名 Opera file://localhost/ドライブ文字:/パス/ファイル名 と、なります。 (なので、Firefox対応にfile:///を付け足すって事を思いついたのですが) Operaの場合、'file://localhost/'を付け足せばうまく動くかな?と、思ったのですが、 <input type="file">から引き継いだはずのsSrcをalert表示すると、Operaではドライブもパスも無くファイル名だけが表示されます。 この事からOperaへの対応は極めて困難そうです。 (ローカルでhtmlと同じフォルダのファイルなら「たまたま」うまくいきそうですが、ドライブもパスもわからなければ、常にhtmlと同じディレクトリにアクセスしてしまいますから) googlepagesやMinefieldの事は知らないのでパスです。 私の契約しているサーバで試したところ、 IEはセキュリティレベルで異なるようです。(信頼済みサイトでは動作したけど、他ではNG) Firefoxでは動作せず。 とにかく、かなり困難なようです。
その他の回答 (1)
- steel_gray
- ベストアンサー率66% (1052/1578)
Firefoxだけ少し調べてみましたが うまくいかない根本の原因は<input type="file">の値をそのまま image.srcに代入しても読み込みエラーになるようです。 sSrcがロカールファイルである事を明示するとうまくいくようです。 例)これで必ずうまくいくかどうかわかりませんが。 sSrc = 'file:///'+sSrc; image.src = sSrc;
お礼
ありがとうございます。 当方環境で試したところ、新事実がっ(おぃ >元のhtml+js IE/Operaのローカルで動作。googlepages上に乗っけたら動作しなくなっちゃいました。Minefieldはどちらでも動作しません >sSrc = 'file:///'+sSrc; IE/Minefieldのローカルで動作。 しかし、googlepagesに乗っけたらやっぱり動作しなくなっちゃいました。(httpにでもしたら動くのかな?) Operaではどちらも動作しません
補足
あ、一応補足質問です。 Q.サーバ上に載せたときも動作させることが出来ないか?(Or 仕様なので不可能?) #場合によっては運営経由で3102596の質問者さんに連絡しなきゃいけないな・・・
お礼
なるほど、良く解りました。中々むずかしいなあ・・・。 詳しい検証ありがとうございます。 >IEはセキュリティレベルで異なるようです。 多分「サーバにファイルをアップロードするときはローカルディレクトリのパスを含める」じゃないかなあという気がしますが・・・(あれ、これ中高で使えるぞ(^^;;; とりあえずQ3102596の質問者には運営を通して報告しておきます。 #締め切ってない質問への誘導依頼って駄目みたい(^^;;; #最初Q3105481(この質問)への回答追加依頼というわけのわからんものを出してしまったorz