なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

Chrome拡張機能開発 選択中の文字列を取得して、クリップボードにコピーするサンプルコード

選択中の文字列を取得し、クリップボードにコピーする

このサンプルでは、文字列を選択した状態で「右クリック」し、「選択中の文字列をコピー」を押すとその文字列をクリップボードにコピーします。

やっていることは ctrl+c と変わりませんが、これを利用することで、取得した文字列を加工したりすることができます。

f:id:karupoimou:20190422053014p:plain
右クリックメニューの表示

f:id:karupoimou:20190422052529p:plain
デバッグの例

サンプルファイルのダウンロード

GitHub - karupoimou/copy_selected

サンプルコード

manifest.json

{
    "manifest_version": 2,
    "name": "copy_selected",
    "description": "copy_selected",
    "version": "1.0",

    "background" : {
     "scripts" : ["background.js"]
   },

    "permissions" : [
      "contextMenus",
      "clipboardRead"
    ],

    "icons" : {
      "48" : "icons/icon48.png"
    }
}

background.js

//コンテクストメニュー 右クリック時に出る表示のやつ
chrome.contextMenus.create({
  "title" : "選択中の文字列をコピー",
  "type"  : "normal",
  "contexts" : ["selection"],
  "onclick" : copytext()
});

//選択中の文字列を取得する関数
function copytext(info,tab){
  return function(info,tab){
    var selection_text = info.selectionText;

    console.log(selection_text);      //取得した文字列をデバッグに送る
    saveToClipboard(selection_text);  //取得した文字列をクリップボードにコピーする関数に送る
  }
}

//選択中文字列をクリップボードに入れる
function saveToClipboard(str) {
        var textArea = document.createElement("textarea");

        document.body.appendChild(textArea);

        textArea.value = str;
        textArea.select();
        document.execCommand("copy");

        document.body.removeChild(textArea);
    }

keyword : Chrome extension

Chrome拡張機能開発 contextMenus(コンテクストメニュー)についてのメモ

contextMenus(コンテクストメニュー)とは

右クリックした時に出てくるリストのこと。

色々と検証

どうやら、コンテクストメニューをつかう場合は、.htmlではなくmanifest.jsonの「”background”」でjsファイルを指定しないといけないらしい。

manifest.json

{
    "manifest_version": 2,
    "name": "action_button_sample",
    "description": "action_button_sample",
    "version": "1.0",


    "background" : {
     "scripts" : ["background.js"]
   },
   
    "permissions" : [
      "contextMenus",
      "http://*/*",
      "https://*/*"
    ],


    "icons" : {
      "16" : "icons/icon48.png"
    }
}

background.js

chrome.contextMenus.create({
  "title" : "コンテクストメニューのサンプル",
  "type"  : "normal",
  "contexts" : ["all"],
  "onclick" : function(info){
    var url = "https://www.google.co.jp/"
    chrome.tabs.create({ url : url});
  }
});

f:id:karupoimou:20190422040657p:plain
サンプル

参考にしたページ

Google Chrome Extensionを作ってみた-その7- | DevelopersIO

上記のページのサンプルでは動かず、


chrome extensionsでcontextMenusを使ってみるテスト1 - tweeeetyのぶろぐ的めも


上記のページのやり方では動いた。


2019.04.22 chrome バージョン: 73.0.3683.103(Official Build) (64 ビット)での場合での検証。

Chrome拡張機能開発 chrome.browserAction アクションボタンのサンプル

概要

chrome機能拡張 chrome.browserAction アクションボタンのサンプル

ボタンを押すと console.log('Pushed!');//For debugging が1回実行されるだけのファイル。

f:id:karupoimou:20190422032627p:plain
サンプル

サンプルファイルのダウンロード

github.com

ファイル構成

f:id:karupoimou:20190422032214p:plain

コード

manifest.json

{
    "manifest_version": 2,
    "name": "action_button_sample",
    "description": "action_button_sample",
    "version": "1.0",
    "author":"My Name",

    "permissions": ["tabs"],
    "browser_action": {
        "default_icon": "icons/icon48.png",
        "default_title": "action_button_sample",
        "default_popup": "popup.html"
    },
    "icons": {
    "48": "icons/icon48.png"
    }
}

popup.html

<!DOCTYPE html>
<html lang="ja">
  <head>
      <meta charset="utf-8">
      <link rel="stylesheet" href="css/style.css">
      <script type="text/javascript" src="js/jquery-3.4.0.min.js"></script>
      <script type="text/javascript" charset="utf-8" src="js/popup.js"></script>
  </head>
      <body style="min-width:250px">
            <input type="button" id="btn" value="TEST BUTTON" /><br>
      </body>
</html>

style.css

input{
    font-size: 18px;
    color: #555;
    padding: 0px;
    height: 40px;
    grid-area: result;
    width: 95%;
}

popup.js

window.onload = function ()
{
  //Run when opened
}

//Aboutボタン(常に有効)
$(function(){
 $("#btn").click(function(){

  //Executed when the button is pressed

  console.log('Pushed!');//For debugging

 });
});

//debugging url (change "mocolllbmbndodjhaiochlcgpdoabdom" to your chrome Extension ID
//chrome-extension://mocolllbmbndodjhaiochlcgpdoabdom/popup.html

デバッグ方法

エクステンションの読み込み後に「エクステンションID」をコピペしてpopup.htmlを開き、「検証」を押す。

f:id:karupoimou:20190422031706p:plain
デバッグ方法

FireFox Addon開発入門のメモ JavaScript で API で行うプラグイン開発

Chrome機能拡張の移植

最近のFireFoxは中身がChromiumベースなので、chromeと非常に似ている。

ja.wikipedia.org

ja.wikipedia.org

機能拡張もほとんどそのまま移植が可能だが、一部APIでは互換性の問題があるので、そういう点をメモしておきます。

一時的なアドオンの読み込み

chromeと違ってFireFoxはメニューバーから拡張機能開発の場所にアクセスできない。なので以下からアクセスする。

about:debugging

上記のアドレスを開くと開発ツールデバッカーが開く。

なおここでは「デバッグ」が使えるの見やすくて便利である。

manifest.json

    "applications": {
      "gecko": {
      "id": "メールアドレス@gmail.com"
      }

一応この一文が必要らしい。

タブの情報を取得する「chrome.tabs.getSelected」は使えない

chrome.tabs.getSelected はfirefoxでサポートされていないので変わりに「 browser.tabs.query 」を使う必要があります。

下記のページにあるサンプルコードが便利です

developer.mozilla.org

chromeのままで良いらしい

chrome.tabs.create({url: 'https://karupoimou.hatenablog.com/'});

の様に、chromeのままでも使えます。chromeの部分を「browser」に変えても使えます。
なお、chromeでは「browser」は使えないみたいです。

作ったアドオンを公開する

addons.mozilla.org

上記のページで公開できる。
なお無料。

審査は15分ぐらいで通りました。おそらく半自動で行われているようです。
最初の審査以外は自動の様で、アップロードすると即反映されるみたいです。

なお公開には FireFoxのアカウントが必要です。

はてな記法でコードボックスを書く方法のメモ

はてなブログでコードボックスを使いたい

はてなブログでコードボックスを使うのは「はてな記法」を使うのが簡単です。

はてな記法の使い方

はてな記法は「編集モード」を変えることで使えるようになります。
help.hatenablog.com

help.hatenablog.com

nagoyanofes.hatenadiary.jp

コピペ用

>|| ||<

>|| ここにコードを書く ||<
>|python| ||<

>|python| ここにコードを書く ||<
記載方法

実際の記載時は、以下の様に書けばOKです。

f:id:karupoimou:20190430221727p:plain

コードボックスのサンプル

import requests
import yaml

payload = {'out': 'yaml'}
r = requests.get('https://api.syosetu.com/novelapi/api/', params=payload).text

print(r)

面倒な人は『単語登録』がオススメ

f:id:karupoimou:20190430222059p:plain
単語登録
毎回打つのが面倒な人は使用しているIMEの辞書または単語に

>||」を「」として
「||<」を「」として
「>|| ||<」 を「ソース

の様にして登録しておくことをオススメします。

これで二度と手で打ち込む必要がなくなります

Tips

>>|aaaa|

aaaa の所に言語名を書くとハイライトされる。
なお大文字を使うとハイライトされなくなるので、言語名は必ず小文字で書く。

コードボックスのデザインはcssで指定

www.foxism.jp

ソースコードをダブルクリックで全選択するやつ

コードボックスのどこかをダブルクリックするだけで、ソースコードを全部選択できるスクリプトです。
当ブログでも使わせてもらっています。

susisu.hatenablog.com


使用方法は簡単。

スクリプトを「設定」ー「デザイン」ー「フッター」の箇所にコピペするだけです。

f:id:karupoimou:20190428105218p:plain:w200
スクリプトを貼る場所

行番号を表示したい

am1tanaka.hatenablog.com

行番号を表示し、奇数行の背景色を変えるスクリプトcssです。
当ブログでも使用させていただいています。

背景色は.css

#eee

のところを変えるとよいみたいです。



ここにコードを書く