「お気に入りの追加」「お気に入りの整理」ダイアログを表示させる
通常、IEでは、
external.AddFavorite(document.URL, document.title);
を実行することで、「お気に入りの追加」のダイアログを表示させることができます。
しかし、「external.AddFavorite」はIEの機能であって、IEコンポーネントの機能ではないので、IEコンポーネント上で「external.AddFavorite」を実行すると未実装エラーとなります。
しかし、これは、次のコードで代用できます。
var shellUIHelper = new ActiveXObject("Shell.UIHelper");
shellUIHelper.AddFavorite(document.URL, document.title);
このコードと下記execute()メソッドを用いて、簡易な「お気に入りの追加」「お気に入りの整理」表示メソッドをCBrowserへ実装しました。
// お気に入りの整理 void organizeFavorites() { const char[] script = `var shellUIHelper = new ActiveXObject("Shell.UIHelper");` `shellUIHelper.showBrowserUI("OrganizeFavorites", null);`; execute(script); } // お気に入りの追加 (現在のページ) void addFavorite() { const char[] script = `var shellUIHelper = new ActiveXObject("Shell.UIHelper");` `shellUIHelper.AddFavorite(document.URL, document.title);`; execute(script); } // お気に入りの追加 void addFavorite(char[] url, char[] title) { const char[] fmt = `var shellUIHelper = new ActiveXObject("Shell.UIHelper");` `shellUIHelper.AddFavorite('%s','%s');`; execute(std.string.format(fmt, escapeString(url), escapeString(title))); } // escape static char[] escapeString(char[] unescaped_string) { return std.string.replace(unescaped_string, "'", "\\'"); }
かっこうはよくないですが、実装は楽です。
- 余談
「お気に入りの追加」が違和感あります。
「(このページを)お気に入り(フォルダ)へ追加」ではないかなと思いました。
「お気に入り(のページ)の追加」? その場合「お気に入り(のページ)を追加」の気が。
日本語難しいです。