お世話になってます。
以下、C言語の話ではないため、不適切でしたらご指摘ください。
いろいろ詳しい方のご意見をいただきたく、問題なければよろしくお願いします。。
[環境]WinXP SP3 Home
[概要]
IEで動作する、お気に入り一覧表示プログラム(HTML+JScript)を作りました。
FirefoxやChromeでも同じように動くものを作るとしたら、どんな方法があるでしょうか?
[詳細]
次のようなプログラムを、JScriptとHTMLで作りました。
・IEのお気に入り(Favorite)フォルダの内容を一覧表示するHTML。
・JScriptの(ActiveXの?)FileSystemObjectを利用して、ローカルファイルを参照/更新します。
自分としては次の点が気に入っており、常用しています。
・タブブラウザで、タブの1つとしてお気に入りを表示できる。
・ブラウザのクライアント領域全体を使って、HTMLで好きなように表示内容を変えられる。
・表示状態を保持したい場合は、ファイルを作ってパラメータを保存しておける。
・お気に入りの追加や整理はブラウザの機能をそのまま使い、変更後はHTMLをリロードすれば反映される。
・オンラインでなくローカルマシン内で完結している。
・CGIではないのでサーバも不要。
このプログラムを、FirefoxやChromeでも動かしたくなったのですが、
・IE以外では、FileSystemObject が使えないため、動作しない。
・JavaScript には、代替となるようなローカルファイルの参照+更新機能はない。
・Flash(ActionScript)も同様。
・Javaならできるのかな?ただ、この程度のモノのためにJavaVMを動かしたくない・・重いから・・。
という状態で、いい方法がないなぁ・・と思っています。
なにかよい案がありましたら、コメント頂けると嬉しいです。
C言語の話ではないですし、放置でも構いません・・。
よろしくお願いします。
ブラウザからのローカルファイル操作で悩んでいます
Re: ブラウザからのローカルファイル操作で悩んでいます
私もそんなに詳しいわけではありませんが、と前置きしておきます。
IEとFireFoxのお気に入りの保存方法の違いはご存じでしょうか?
IEはお気に入りフォルダにショートカットをぶっ込むだけなのに対して、FFはお気に入りテキストファイルにURLを列挙していきます。
これは恐らくたろさんが気付いたようにFFがフォルダを直接いじれないからかもしれません。
とはいえ、HTMLをかませているのであれば、HTMLのOBJECTとしてテキストファイルを読み込んだ後にJSで編集、整形することは可能だと思います。とりあえず現存のFFのお気に入り仕様を真似てみてはどうでしょうか?
Chromeは分かりませんが同じように出来るのでは?w
IEとFireFoxのお気に入りの保存方法の違いはご存じでしょうか?
IEはお気に入りフォルダにショートカットをぶっ込むだけなのに対して、FFはお気に入りテキストファイルにURLを列挙していきます。
これは恐らくたろさんが気付いたようにFFがフォルダを直接いじれないからかもしれません。
とはいえ、HTMLをかませているのであれば、HTMLのOBJECTとしてテキストファイルを読み込んだ後にJSで編集、整形することは可能だと思います。とりあえず現存のFFのお気に入り仕様を真似てみてはどうでしょうか?
Chromeは分かりませんが同じように出来るのでは?w
Re: ブラウザからのローカルファイル操作で悩んでいます
ゆーずぃさん、ありがとうございます!
Firefoxのお気に入り形式は調べていませんでした。
手元のFirefox4で軽く探してみたら、JSON形式やXML形式のファイルがありました。
ただ、すみません「HTMLのOBJECTとしてテキストファイルを取得」の意味がピンと来ません・・。
<object>タグのことでしょうか?
動画の埋め込みかなにかでチラ見したことはあるけど、ローカルファイルも読み込めるのかな・・。
しかしファイルの作成は難しいような・・。
その後、Firefoxに絞って、ブックマークを取得する方法をさがしていたところ、
なんと、やりたいと思っていたことがほとんどできるアドオンを見つけてしまいました!
「MyBookmarks」というアドオンで、こんな感じのものが欲しかったのでした。
https://addons.mozilla.org/ja/firefox/a ... bookmarks/
http://www.catsyawn.net/ma2ten/soft/mybookmarks_jp.html
Chrome版もあり、もはや自分で作る必要もないほどです・・。
ひとまずこの実装をお手本に勉強してみようかな・・。
ありがとうございました!
Firefoxのお気に入り形式は調べていませんでした。
手元のFirefox4で軽く探してみたら、JSON形式やXML形式のファイルがありました。
ただ、すみません「HTMLのOBJECTとしてテキストファイルを取得」の意味がピンと来ません・・。
<object>タグのことでしょうか?
動画の埋め込みかなにかでチラ見したことはあるけど、ローカルファイルも読み込めるのかな・・。
しかしファイルの作成は難しいような・・。
その後、Firefoxに絞って、ブックマークを取得する方法をさがしていたところ、
なんと、やりたいと思っていたことがほとんどできるアドオンを見つけてしまいました!
「MyBookmarks」というアドオンで、こんな感じのものが欲しかったのでした。
https://addons.mozilla.org/ja/firefox/a ... bookmarks/
http://www.catsyawn.net/ma2ten/soft/mybookmarks_jp.html
Chrome版もあり、もはや自分で作る必要もないほどです・・。
ひとまずこの実装をお手本に勉強してみようかな・・。
ありがとうございました!
Re: ブラウザからのローカルファイル操作で悩んでいます
>「HTMLのOBJECTとしてテキストファイルを取得」たろ さんが書きました: ただ、すみません「HTMLのOBJECTとしてテキストファイルを取得」の意味がピンと来ません・・。
<object>タグのことでしょうか?
動画の埋め込みかなにかでチラ見したことはあるけど、ローカルファイルも読み込めるのかな・・。
しかしファイルの作成は難しいような・・。
<object>タグのことです。動画のみならず色々なものを埋め込める便利なやつなのでテキストファイルの展開くらい容易です。
イメージが湧かないということで一応使用例を書いておくと、
1、HTML上に<object>タグを配置し、ファイルの中身を展開させる。
2、JavaScriptにて展開した内容を変数に入れる。
3、内容を解析しながら処理させる。
まぁ、こんなことしなくてもXMLならJavaScriptで読み込めるようですが(XML以外は分かりません)w
>しかしファイルの作成は難しいような・・。
はい、無理ではないかもしれませんが、厳しいでしょう。
JavaScriptで実現→
FFの場合はセキュリティを考慮して、直接ファイルを作成・書き込み出来るようなScriptは出していないようです。
HTMLで実現→
浅学なもので、そんなタグは聞いたこと無いです。ごめんなさいw
ということで私ならですが、HTML+exe+JavaScriptで無理矢理やってみます。
まずローカル限定になりますが、
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
(↑電卓を実行)
でexeを叩けます。
これを利用して作成済みのファイル作成.exeを実行します。
引数はsubmitでは送れないでしょうから、一旦JavaScriptでクッキーに保存します。その後、exeからクッキーを読み込み、値を取得します。
リンクではなくボタンが良ければsubmitのactionにリンクをセットすればイケるのではないかと。
かなり無理矢理ですが、参考としてどうぞw
Re: ブラウザからのローカルファイル操作で悩んでいます
ゆーずぃさんありがとうございます!
ググッてもやり方が見つけられず、無念です・・。
うーむAjaxとか言われ始めてからもうぜんぜんついていけないです・・(^^;)
もはやアドオン開発のほうが楽なのではないか・・と思えてしまいますが、とても参考になりました。
たしかにクッキーはブラウザからファイルを作れる仕掛けですね。なるほど。
ちなみに、電卓実行を試してみたのですが、Chrome,Firefox共に単なるファイルのダウンロードになってしまいました・・。
これを書いたHTMLファイルを開いただけなのですが、何か足りなかったのでしょうか・・。
すみません、食いついておいてなんですが、いまのところ、Firefox,Chromeについてはブラウザ依存の拡張機能(アドオン)
を使って実現するのが素直なのかなぁ・・という感触をもっています。自分にとってはトリッキーなやり方がおもしろくて、
後学も兼ねて食いつかせてもらいました・・。
試しにやってみたところ、1 はできたのですが、2 のやり方がわかりませんでした・・。ゆーずぃ さんが書きました: 1、HTML上に<object>タグを配置し、ファイルの中身を展開させる。
2、JavaScriptにて展開した内容を変数に入れる。
<object id=xxx data="xxx.txt" type="text/plain">埋め込み失敗</object>
<script>
alert(document.getElementById('xxx').data); // ファイルパスになってしまう
alert(document.getElementById('xxx').innerText); // undefined
alert(document.getElementById('xxx').innerHTML); // xxx.txtの中身でなく"埋め込み失敗"
</script>
XML形式だけなにか許可されているような機能があるのでしょうか。ゆーずぃ さんが書きました:まぁ、こんなことしなくてもXMLならJavaScriptで読み込めるようですが(XML以外は分かりません)w
うーむAjaxとか言われ始めてからもうぜんぜんついていけないです・・(^^;)
すごい。発想がすごいです。なんというトリッキーな・・。ゆーずぃ さんが書きました:ということで私ならですが、HTML+exe+JavaScriptで無理矢理やってみます。
まずローカル限定になりますが、
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
(↑電卓を実行)
でexeを叩けます。
これを利用して作成済みのファイル作成.exeを実行します。
引数はsubmitでは送れないでしょうから、一旦JavaScriptでクッキーに保存します。その後、exeからクッキーを読み込み、値を取得します。
リンクではなくボタンが良ければsubmitのactionにリンクをセットすればイケるのではないかと。
もはやアドオン開発のほうが楽なのではないか・・と思えてしまいますが、とても参考になりました。
たしかにクッキーはブラウザからファイルを作れる仕掛けですね。なるほど。
ちなみに、電卓実行を試してみたのですが、Chrome,Firefox共に単なるファイルのダウンロードになってしまいました・・。
<a href="file:///c:/windows/system32/calc.exe">電卓</a>
<form action="file:///c:/windows/system32/calc.exe"><input type=submit></form>
すみません、食いついておいてなんですが、いまのところ、Firefox,Chromeについてはブラウザ依存の拡張機能(アドオン)
を使って実現するのが素直なのかなぁ・・という感触をもっています。自分にとってはトリッキーなやり方がおもしろくて、
後学も兼ねて食いつかせてもらいました・・。