Firefox 3 において keyconfig アドオンを使用してのショートカットキーの割り当てです。私は合わせて functions for keyconfig も使用しています
通常、新しいウィンドウにページのソースが表示されてしまいますが、それを新しいタブ内に表示するように変更
- var sourceURL = 'view-source:' + content.document.location.href;
- gBrowser.selectedTab = gBrowser.addTab( sourceURL );
なぜか CTRL + I を押しても、サイドバーにブックマークが表示されてしまうので、ページ情報ダイアログを表示するように変更
- BrowserPageInfo();
ファンクションキーでタブの切り替えを行いたいので変更
- gBrowser.mTabContainer.advanceSelectedTab(-1,true);
ファンクションキーでタブの切り替えを行いたいので変更
- gBrowser.mTabContainer.advanceSelectedTab(+1,true);
現在表示しているページの URL をクリップボードにコピーします
- var w = window._content;
- var d = w.document;
- var txt = d.location.href;
- const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
- CLIPBOARD.copyString(txt);
現在表示しているページのタイトルをクリップボードにコピーします
- var w = window._content;
- var d = w.document;
- var txt = d.title;
- const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
- CLIPBOARD.copyString(txt);
現在表示しているページの URL とタイトル等の情報を元に HTML のアンカー要素を生成し、クリップボードにコピーします。本サイトのアンカー要素の生成はコレで行っています
- var w = window._content;
- var d = w.document;
- /* var l = d.documentElement.attributes[0].value; */
- var l = '';
- var txt = '<a target="_blank" hreflang="' + l + '" href="' + d.location.href + '" title="' + d.title + '">' + d.title + '</a>';
- const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
- CLIPBOARD.copyString(txt);
3行目がコメントになってますが、ページの言語情報がページによってはうまく取得できないで、ここだけは手入力してます…('A`)
検索バーのサーチエンジンをキーボードの入力フォーカスを移す事なく切り替えます。トップの場合は最後の検索エンジンに切り替えます
- var search = document.getElementById("searchbar");
- var newIndex = search.engines.indexOf(search.currentEngine);
- if ( --newIndex < 0 ) newIndex = search.engines.length-1;
- search.currentEngine = search.engines[newIndex];
検索バーのサーチエンジンをキーボードの入力フォーカスを移す事なく切り替えます。最後の場合はトップの検索エンジンに切り替えます
- var search = document.getElementById("searchbar");
- var newIndex = search.engines.indexOf(search.currentEngine);
- if ( ++newIndex >= search.engines.length ) newIndex = 0;
- search.currentEngine = search.engines[newIndex];
前述の 検索バー切り替え↑ と 検索バー切り替え↓ と合わせて使うととても便利です
- var sel = window._content.getSelection( );
- var s = '';
- if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) return ;
- for ( i = 0; i < sel.rangeCount; ++i ) {
- s += sel.getRangeAt(i).toString().replace( /^\s+|\s+$/g, '' ) + ' ';
- }
- s = s.replace(/[\+\s]+$/g,'');
- document.getElementById( "searchbar" ).doSearch(s, 'tab');
選択文字列(複数対応) を検索エンジン(googleの場合) で検索し、ページを新しいタブに表示します。14 行目を変更する事によって、他の検索エンジンや検索エンジンへ渡す URL パラメーターを変更できます
- var win = window._content;
- var doc = win.document;
- var sel = win.getSelection( );
- var s = '';
- var sURL = '';
- if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) {
- return ;
- }
- for ( i = 0; i < sel.rangeCount; ++i ) {
- stmp = sel.getRangeAt(i).toString().replace( /^\s+|\s+$/g, '' );
- s += (encodeURIComponent(stmp) + '+').toString().replace(/%20/g,'+');
- }
- s = s.replace(/\++$/g,'');
- sURL = 'http://www.google.co.jp/search?q=' + s + '&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a';
- gBrowser.selectedTab = gBrowser.addTab( sURL );
選択文字列の中に空白が含まれている場合のバグを修正 (11行目)
選択文字列(複数対応) を検索バーの入力ボックスへセットします
- var win = window._content;
- var doc = win.document;
- var sel = win.getSelection( );
- var s = '';
- if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) {
- return ;
- }
- for ( i = 0; i < sel.rangeCount; ++i ) {
- s += sel.getRangeAt(i) + ' ';
- }
- document.getElementById("searchbar").value = s.replace(/^\s+|\s+$/g,'');
検索バーをクリアします
- document.getElementById("searchbar").value = "";
Firefox を再起動します
- const nsIAppStartup = Components.interfaces.nsIAppStartup;
- var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
- var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
- os.notifyObservers(cancelQuit, "quit-application-requested", null);
- if (cancelQuit.data) return;
- Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup).quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);
再起動時に終了時の状態復元が必要なければ、2~5行目は不要です