今日もガクリ('A`)
きっと明日もまたガクリ?('A`)
2022 / 09
« «  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
archive for the ‘JavaScript’ category
WordPress の余計なフィルター/アクションを除去する

久しぶりに本ブログを更新して、ふと UAFirefox Quantum でアクセスし、CTRL + UHTML ソースを見たら、何じゃこりゃ~!? とヘッダー部分に余計な汚らしい JavaScript が入っているではないか!

WordPress の余計な仕業
WordPress の余計な仕業

上記画像の水色で囲っている部分が WordPress が行っている余計な仕業です。で、最も簡単な解決方法は WordPress をインストールしているディレクトリにある wp-includes/default-filters.php を以下の行を見つけコメントアウトしてしまう事です

add_action( 'wp_head',             'rest_output_link_wp_head', 10, 0 );
add_action( 'wp_head',             'wp_resource_hints',               2     );
add_action( 'wp_head',             'print_emoji_detection_script',     7    );
add_action( 'wp_print_styles',     'print_emoji_styles'                     );

しかし、私の場合は WordPress 自体がバージョンアップする度にサーバー上に全上書きしているので、この方法だとバージョンアップの際にこの修正を忘れてしまうというヒューマンエラーを起こしてしまいます

そこで、WordPress 関数 remove_action を使います。変更対象はテンプレートの header.php を以下の様に wp_head 関数をコールされる前に記述しておきます。本ブログのテンプレートは自前で作成した物なので、WordPress バージョンアップ際にはテンプレートは更新対象外なので影響はありません

<?php
/* 2018/08/06 ヘッダーに余計なゴミ JavaScript 等を除去する */
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'wp_head', 'wp_resource_hints', 2 );
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'wp_print_styles', 'print_emoji_styles' );

wp_head();
?>

以上の変更を施し、サーバーにアップロードを行い、UA でリロード、ソースを見ると、下記画像の様にすっきりしました

WordPress の余計な仕業を除去してスッキリした HTML ヘッダー
WordPress の余計な仕業を除去してスッキリした HTML ヘッダー
blog, HTML, JavaScript, PHP, WordPressno commentsno trackbacks(771)
Firefox 3 : アドオン keyconfig によるショートカットキー割り当て

Firefox 3 において keyconfig アドオンを使用してのショートカットキーの割り当てです。私は合わせて functions for keyconfig も使用しています

ページのソースを新しいタブに表示

通常、新しいウィンドウにページのソースが表示されてしまいますが、それを新しいタブ内に表示するように変更

  1. var sourceURL = 'view-source:' + content.document.location.href;
  2. gBrowser.selectedTab = gBrowser.addTab( sourceURL );

ページ情報ダイアログ表示

なぜか CTRL + I を押しても、サイドバーにブックマークが表示されてしまうので、ページ情報ダイアログを表示するように変更

  1. BrowserPageInfo();

前のタブ

ファンクションキーでタブの切り替えを行いたいので変更

  1. gBrowser.mTabContainer.advanceSelectedTab(-1,true);

次のタブ

ファンクションキーでタブの切り替えを行いたいので変更

  1. gBrowser.mTabContainer.advanceSelectedTab(+1,true);

コピー URL

現在表示しているページの URL をクリップボードにコピーします

  1. var w = window._content;
  2. var d = w.document;
  3. var txt = d.location.href;
  4. const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
  5. CLIPBOARD.copyString(txt);

コピータイトル

現在表示しているページのタイトルをクリップボードにコピーします

  1. var w = window._content;
  2. var d = w.document;
  3. var txt = d.title;
  4. const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
  5. CLIPBOARD.copyString(txt);

コピーアンカー

現在表示しているページの URL とタイトル等の情報を元に HTML のアンカー要素を生成し、クリップボードにコピーします。本サイトのアンカー要素の生成はコレで行っています

  1. var w = window._content;
  2. var d = w.document;
  3. /* var l = d.documentElement.attributes[0].value; */
  4. var l = '';
  5. var txt = '<a target="_blank" hreflang="' + l + '" href="' + d.location.href + '" title="' + d.title + '">' + d.title + '</a>';
  6. const CLIPBOARD = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
  7. CLIPBOARD.copyString(txt);

3行目がコメントになってますが、ページの言語情報がページによってはうまく取得できないで、ここだけは手入力してます…('A`)

検索バー切り替え↑

検索バーのサーチエンジンをキーボードの入力フォーカスを移す事なく切り替えます。トップの場合は最後の検索エンジンに切り替えます

  1. var search = document.getElementById("searchbar");
  2. var newIndex = search.engines.indexOf(search.currentEngine);
  3. if ( --newIndex < 0 ) newIndex = search.engines.length-1;
  4. search.currentEngine = search.engines[newIndex];

検索バー切り替え↓

検索バーのサーチエンジンをキーボードの入力フォーカスを移す事なく切り替えます。最後の場合はトップの検索エンジンに切り替えます

  1. var search = document.getElementById("searchbar");
  2. var newIndex = search.engines.indexOf(search.currentEngine);
  3. if ( ++newIndex >= search.engines.length ) newIndex = 0;
  4. search.currentEngine = search.engines[newIndex];

選択文字列を検索バーで現在選択されているエンジンで検索

前述の 検索バー切り替え↑検索バー切り替え↓ と合わせて使うととても便利です

  • Web ページ上の文字列を選択した後にアサインしたキーを押す事によって検索エンジンでの検索結果ページを表示します
  • CTRL キーを押しながらの複数選択文字列にも対応
  • サーチエンジンの検索結果は新しいタブに表示されますが、8行目の tabcurrent に変更する事によって、現在アクティブのタブに表示します
  • 検索バーには検索語は表示されません
  1. var sel = window._content.getSelection( );
  2. var s = '';
  3. if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) return ;
  4. for ( i = 0; i < sel.rangeCount; ++i ) {
  5.   s += sel.getRangeAt(i).toString().replace( /^\s+|\s+$/g, '' ) + ' ';
  6. }
  7. s = s.replace(/[\+\s]+$/g,'');
  8. document.getElementById( "searchbar" ).doSearch(s, 'tab');
  • 選択文字列の中に空白が含まれている場合のバグを修正 (12行目)
  • さらにバグ…('A`) どうやら encodeURIComponent は必要ない模様… (12行目)
  • 7行目の修正と全体的に冗長なコードをまとめた

選択範囲を検索

選択文字列(複数対応) を検索エンジン(googleの場合) で検索し、ページを新しいタブに表示します。14 行目を変更する事によって、他の検索エンジンや検索エンジンへ渡す URL パラメーターを変更できます

  1. var win = window._content;
  2. var doc = win.document;
  3. var sel = win.getSelection( );
  4. var s = '';
  5. var sURL = '';
  6. if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) {
  7.   return ;
  8. }
  9. for ( i = 0; i < sel.rangeCount; ++i ) {
  10.   stmp = sel.getRangeAt(i).toString().replace( /^\s+|\s+$/g, '' );
  11.   s += (encodeURIComponent(stmp) + '+').toString().replace(/%20/g,'+');
  12. }
  13. s = s.replace(/\++$/g,'');
  14. 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';
  15. gBrowser.selectedTab = gBrowser.addTab( sURL );

選択文字列の中に空白が含まれている場合のバグを修正 (11行目)

選択文字列を検索バーへ

選択文字列(複数対応) を検索バーの入力ボックスへセットします

  1. var win = window._content;
  2. var doc = win.document;
  3. var sel = win.getSelection( );
  4. var s = '';
  5. if ( !sel.rangeCount || sel.getRangeAt(0) == '' ) {
  6.   return ;
  7. }
  8. for ( i = 0; i < sel.rangeCount; ++i ) {
  9.   s += sel.getRangeAt(i) + ' ';
  10. }
  11. document.getElementById("searchbar").value = s.replace(/^\s+|\s+$/g,'');

検索バーをクリア

検索バーをクリアします

  1. document.getElementById("searchbar").value = "";

Firefox を再起動

Firefox を再起動します

  1. const nsIAppStartup = Components.interfaces.nsIAppStartup;
  2. var os = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);
  3. var cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"].createInstance(Components.interfaces.nsISupportsPRBool);
  4. os.notifyObservers(cancelQuit, "quit-application-requested", null);
  5. if (cancelQuit.data) return;
  6. Components.classes["@mozilla.org/toolkit/app-startup;1"].getService(nsIAppStartup).quit(nsIAppStartup.eRestart | nsIAppStartup.eAttemptQuit);

再起動時に終了時の状態復元が必要なければ、2~5行目は不要です

internet, JavaScript, softwarecomment (1)trackback (1)(23,821)
contents
most viewed (1102874)
categories
archives
recent posts
recent updates
recent comments
recent trackbacks
912T ASUSTeK ASUSTeK Crosshair IV Extreme blog CSS DARK SOULS DARK SOULS 3 Darksouls3 DarksoulsIII DARK SOULS III DISM Euro Truck Simulator 2 Everquest II firefox foobar2000 game Install internet KB2990941 KB3087873 mod panels ui PCゲーム PHP PX-Q3PE Raid skin SoftBank software SpeedFan Spinel Steam TPS trailer truck TvRock TVTest Windows Windows 7 Win Toolkit WordPress インストール ダークソウルズ 初音ミク 窓辺ななみ
mobile
qrcode:home
profile
曇り札幌市中央区 ‘ 曇り
気温: 10℃ ‘ 湿度: 66%
recommends
Valid XHTML 1.0 Transitional Valid CSS X.X
RSS 2.0 RSS 0.92
RDF/RSS ATOM
get Firefox 2 get Opera
ie