質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
XUL

XUL(ズール)とは、XMLアプリケーションの一種で、ユーザーインターフェースマークアップ言語です。 Mozillaアプリケーションを作成でき、CSSやJavaScriptなどに親しんでいるエンジニアやデザイナーには習得しやすい言語といえます。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

0回答

2236閲覧

Xul(Firefox, Thunderbird)においてネットワーク共有フォルダにあるファイルをfile://スキームで参照するとエラー

hsk

総合スコア728

XUL

XUL(ズール)とは、XMLアプリケーションの一種で、ユーザーインターフェースマークアップ言語です。 Mozillaアプリケーションを作成でき、CSSやJavaScriptなどに親しんでいるエンジニアやデザイナーには習得しやすい言語といえます。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2015/12/21 10:21

編集2015/12/21 10:39

お世話になっております。
Mozillaアプリケーションのアドオンを作成しています(Windows 7 professional で開発)
Windowsファイル共有フォルダ (\fileserver\folder) があり、file://fileserver/folder/filename と指定して共有フォルダ内のファイルに XULRunner 上の JavaScript からアクセスしようとしてます。

js

1// 例 2let ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); 3let fph = ios.getProtocolHandler('file').QueryInterface(Components.interfaces.nsIFileProtocolHandler); 4let f1 = fph.getFileFromURLSpec("file://c:/windows/system32/"); 5let f2 = fph.getFileFromURLSpec("file://fileserver/folder/");

上記コードで、f1 はエラーにならずに nsIFile オブジェクトを取得できるのですが、f2 はエラーになります。

例外の内容は
"Component returned failure code: 0x80520001 (NS_ERROR_FILE_UNRECOGNIZED_PATH) [nsIFileProtocolHandler.getFileFromURLSpec]" (String)
です。

ちなみに、file://fileserver/folder/ を InternetExplorer のアドレスへ入れると移動できます(=存在するパスです)。

このエラーの原因は何なのでしょうか?
上記コードの結果から、ドライブパスから指定する方法でないと UNRECOGNIZED_PATH になってしまうように考えられるのですが(file://localhost/c$/windows/system32/ もだめでした)、何か別の手順が必要だったりするのでしょうか?

ちなみに、次のコードのように nsIFile オブジェクトを生成してUNCでパス指定をする方法は(リモートフォルダであっても)成功します。しかしこれは windows だから成功したことであって、Linux や Macintosh 上の Mozilla アプリケーションでは失敗するでしょう。

js

1let f = Components.classes["@mozilla.org/file/local;1"] 2 .createInstance(Components.interfaces.nsIFile); 3f.initWithPath("\\\\fileserver\\folder\\");

ご存知の方、ご教示のほどお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問