HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

ロボフォームのようなパスワードを保存する拡張機能

スポンサーリンク

ロボフォームのようなパスワードを保存するJavaScritpを書こうと思った。
ロボフォームは、wwwサイトのログイン情報などを保存できるブラウザの拡張機能だ。

ところが、バージョンが上がるたび使い勝手が悪くなり、つい最近のバージョンアップでは、それまで保管してあったパスワードデータが消えているのだ。

前までバックアップ機能が付いてはいたがIDは、みれても肝心のパスワードは入っていない。

つまり、囲い込みのため着々とバージョンアップを重ねてきたわけだ。
そのバージョンアップの言い訳にどんどんと使いにくくしていったと。
たぶん、開発側は使いやすくしたと自負していると思うが、現場をしらない連中がここにもいる。

つーことで、ツールバーにアイコンを表示させ、そこからwwwサイトのログイン情報の保存とフィールドへの書き込みの2つのボタンでwwwサイトのログイン情報をコントロールしようというわけだ。

とりあえず、グーグルクロームの拡張機能の開発ということで順次情報を追加していこうと思います。


案外簡単グーグルクロームの拡張機能


拡張機能で検索すると「案外簡単」そうに書かれている拡張機能ですけど、あくまでもサンプルの形で実際に使う場面での書き方をしたものがなく、持っているJavaScriptの知識を総動員して想像しないと作れなかったりします。

でも基本は解読できたので書いておきます。

拡張機能の基本構造


manifest.join というファイルに使用するものの宣言をしておきます。

拡張機能には次の3種類があります。
  • Browser actions
    ツールバーから起動
  • Page actions
    アドレスバーの中に表示
  • Override Pages
    Chromeの内部のページを代替することができます


拡張機能を使う場面でどれを使うか決まります。
訪問サイトで使うなら Browser actions
特定のページで使うなら Page actions
クロームの内部画面を変えるなら Override Pages

まぁ、ほとんど Browser actions で用が足りるでしょう。


Browser actions の manifest.join


manifest.join の各構文は、 “~”: “値” の形で書かれ、カンマで , 区切ります。
ブロックは { } でかこみます。 複数パラメータは [ ] でくくります。
{
 "name": "拡張機能の名前",
 "version": "拡張機能のバージョン",
 "manifest_version": "マニフェストファイルのバージョン",
 "description": "拡張機能の説明",
 "icons":{ // ここで設定するアイコンは、拡張機能の画面やwwwショップなどで使われます。
  "16": "16x16dotのアイコン画像(png形式)",
  "48": "48x48dotのアイコン画像(png形式)",
  "128": "128x128dotのアイコン画像(png形式)",
 },
 "browser_action": {
  "default_icon": "ツールバーに表示するアイコンファイル(32x32のpngで作りました)",
  "default_title": "ツールバーのアイコンにマウスオーバーしたとき表示する拡張機能の名前",
  "default_popup": "ツールバーの拡張機能のアイコンをクリックしたとき表示する html" // 管理画面ともいえる
 },
 "content_scripts": [
  {
    "matches": ["http://*/*","https://*/*"], // このカードにマッチしたサイトで content.jsを使う
    "js": ["jquery.min.js","content.js"]     // 便利なので jquery も読み込ませておく
  }
 ],
 "permissions": [ // 実行権を与える
  "tabs",
  "http://*/*",
  "https://*/*"
 ]
}

つまり、基本は browser_action からの起動になります。
content_script は、読み込んであるだけで現在アクティブなwwwサイトのページをコントロールするために使います。

browser_action から  メッセージを送信して content_script の関数を呼び出して当該のwwwサイトのページをコントロールします。

メッセージの送信は、非同期なため(メッセージを送った側にメッセージを送られた側からの返信を受け取れない)
あくまでもメッセージ送信はwwwサイトのページ解析のための起動トリガーとなります。



スポンサーリンク





manifest.join の例


{
	"name": "Sample",
	"version": "1.0.0",
	"manifest_version": 2,
	"description": "Sample Chrome Extension",
	"browser_action": {
    	"default_icon": "smapl.png",
		"default_title": "yuzu form",
		"default_popup": "yuzuform.html"
	},
	"icons":{
		"16" : "smapl16.png",
		"48" : "smapl48.png",
		"128" : "smapl128.png"
	},
	"content_scripts": [
		{
			"matches": ["http://*/*","https://*/*"],
			"js": ["jquery.min.js","content.js"]
		}
	],
	"permissions": [
		"tabs",
		"background",
		"contextMenus",
		"http://*/*",
		"https://*/*"
	]
}

“default_popup”: “yuzuform.html”


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<link rel="shortcut icon" href="http://yuzumaru.org/wp-center/favicon.ico" type="image/png">
<link rel="icon" href="http://yuzumaru.org/wp-center/favicon.ico" type="image/png ">
<title>sample.js クローム 拡張</title>
<script src="jquery.min.js"></script>
</head>
<body>
<form name="form0">
  <script src="../actionscript.js"></script>
  <button id="btn">message Call</button>
  <script src="popup.js"></script> <!-- メッセージ送信を行うための javascript -->
</form>
</body>
</html>

メッセージ送信のためのJavaScript popup.js


$("#btn").on("click", () => {
	var queryInfo = {
		active: true,
		windowId: chrome.windows.WINDOW_ID_CURRENT
	};
	chrome.tabs.query(queryInfo, function(result) {
		var currentTab = result.shift();
		var message = {};
		// 現在表示しているタブにメッセージを送る
		chrome.tabs.sendMessage(currentTab.id, message, function() {});
	});
});

メッセージを受け取る側のJavscript content.js


ここで定義した content.js です。
"content_scripts": [
		{
			"matches": ["http://*/*","https://*/*"],
			"js": ["jquery.min.js","content.js"]
		}

content.js


chrome.runtime.onMessage.addListener(
	function(msg) {
		return {response: "ok"}
	}
);

スポンサーリンク

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所

WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所 WelCart 買い物かごのカスタマイズするとき、毎回テンプレートファイルを探すのでメモしておきます。WelCart 買い物かごのカスタマイズ、テンプレートファイルの場所WelCart 買い物かごのカ

WelCart で投稿ページに商品購入欄を作る

WelCart で投稿ページに商品購入欄を作る WelCart の商品ページは、ご存知んごとくウルトラダサい。これをカスタマイズしないとなんとも素人っぽさの抜けないサイトになってしまう。WelCart で投稿ページに商品購入欄を作るときのモジュール

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクスとサーチコンソール。別にグーグルのアナリティクス、サーチコンソールでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクス。別にグーグルのアナリティクスでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せな

FB 広告 最適化~グーグルサーチコンソールの使い方(必要な分だけ)

FB 広告 最適化~グーグルサーチコンソールの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルサーチコンソール。別にグーグルのサーチコンソールでなくてもいいんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せなくしたキーワ

FB 広告 最適化~グーグルのアクセス解析の基本

FB 広告 最適化~グーグルのアクセス解析の基本 FB広告を最適化するためには、アクセス解析が重要なカギを握ります。FB広告から当該ページに飛んでくるときURLにオプションを付けることができます。このURLにつけたオプションを使ってどの広告から、どん