― MozillaZine.jp フォーラムは Mozilla 製品に関する情報交換の場です ―



All times are UTC + 9 hours

新しいトピックを投稿する トピックへ返信する  [ 3 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2010年1月09日(土) 18:25 
オフライン

登録日時: 2007年1月14日(日) 14:24
記事: 138
お住まい: Osaka,Japan
 実は以前ご相談させていただいた http://forums.mozillazine.jp/viewtopic.php?t=9120 と関連があるのですが、Windows VistaにおいてWindows ExplorerからファイルをDropできない現象に悩んでおります。コード自体はWindowsXPとUbuntu環境で動作することを確認済み、といいますか元々動いており現在でも動いております。
 最近たまたま友人所有のVista環境で確認する機会があり、試してみたところ、Dropイベントをまったく拾うことができていない、ということが判明しました。なんど確認しましてもWindowsXP、Ubuntu環境では現象が発生することがなく、Vista固有の問題なのか、とも推測しております。

 当該コードは http://github.com/mitsugu/foxzou/blob/1.0/chrome/content/overlay.js のDragDropイベントハンドラのonDrop()になります。このコードは以前からWindowsXP、Ubuntu環境で普通に動作しています。テストのために
コード:
alert(dropdata.data);

というコードを入れてもalert自体がポップアップされません。

 さらに追記しますと、一度Firefoxのコンテンツ領域に画像ファイルをドロップし、コンテンツ領域から当該拡張にドラッグ・アンド・ドロップをすることは可能で、そのようなオペレーションをすればWindows Vistaであっても当該コードは動作しています。そのため拡張側の問題なのかOS環境の問題なのか切り分けができておりません。

 どなたかこのような現象に遭遇されていたり、あるいは現象に遭遇かつ解決に至った方はいらっしゃらないでしょうか。

[現象が発生しない環境]
OS:Windows XP、Ubuntu
Firefox:3.0.0.x、3.5.x、Namoroka、Minefield

[現象が発生する環境]
OS:Windows Vista Ultimate
Firefox:3.0.0.x、3.5.x、Namoroka、Minefield


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2010年1月11日(月) 17:19 
オフライン

登録日時: 2007年1月14日(日) 14:24
記事: 138
お住まい: Osaka,Japan
 Windows Vista環境においてWindows Explorerからのドラッグ・アンド・ドロップを可能にするには、以下のように実装する必要がある(古い方法ではWindows Vistaでは動作しない)。なお、以下の方法は Firefox3.0.xでは使用不可能である。また event.preventDefault() に関する記述は省略する。

・XUL側でdragover、dropイベントを捕捉するようにondragover、ondrop属性を書く
・dropイベントハンドラ内でドロップされたファイルのパス名を取り出す際は、コンテントタイプに "text/x-moz-url" を指定する。"text/plain"を指定するとWindows Vistaではパス名を拾うことができない。

以下残件。
 ・複数ファイルをドロップする際に event.dataTransfer.mozItemCount、event.dataTransfer.mozGetDataAt("text/x-moz-url",i) がWindows Vistaで正常に機能するかの確認 (Ubuntuでは正常動作確認済み)

参考ページ
 ・ドラッグ&ドロップ
 ・推奨されるドラッグのデータ型
 ・複数の項目のドラッグ&ドロップ

以上


通報する
ページトップ
 プロフィール  
引用付きで返信する  
投稿記事Posted: 2010年1月17日(日) 07:00 
オフライン

登録日時: 2007年1月14日(日) 14:24
記事: 138
お住まい: Osaka,Japan
 問題が解決したので報告です。この URL で問題を解決したソースを公開しています。

 該当個所は、XUL での記述は overlay.xul 内の id が foxzou-contents の vbox 要素、JavaScript 側は overlay.js の
foxzouNs.dragDrop.onDrop() 関数
がそれです。

# このコードは Firefox3.5 から動きます。Firefox3.0.xでは動作しません。
# また旧 API は Windows Vista 以降では動作しません (エクスプローラからドロップできない)。


通報する
ページトップ
 プロフィール  
引用付きで返信する  
期間内表示:  ソート  
新しいトピックを投稿する トピックへ返信する  [ 3 件の記事 ] 

All times are UTC + 9 hours


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[31人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
Powered by MozillaZine.jp® Forum Software © phpBB Group , Almsamim WYSIWYG
Japanese translation principally by ocean