自動入力のためのブックマークレットの作り方

ウェブサイトのテキストボックスに文字列をセットしたり、リストボックスの選択肢を選んだりすることがありますが、いつも同じページで同じ作業をするのは苦痛です。
ブックマークレットを使うと自動化することができます。
ここではブックマークレットの作り方を説明します。 (さらに…)

テキストボックスにひらがな以外を入力できないようにする方法

テキストボックスにひらがな以外を入力できないようにしたい。
次のようにすると、ひらがな以外または空文字の場合、アラートが出て実行されない。

<form action="" onsubmit="return checkit()">
<input type="text" id="t0" style="ime-mode:active;">
<input type="submit" value="実行">
</form>
<script>
function checkit(){
  mytext=document.getElementById("t0").value;
  if(mytext.match(/[^あ-ん]/)){
    alert("ひらがなで入力してください。");
    flg=false;
  }else if(mytext==""){
    alert("何か入力してください。");
    flg=false;
  }else{
    flg=true;
  }
  return(flg);
}
</script>

JavaScriptで改行を削除する方法

JavaScriptで改行を削除する方法は色々あるようですが、これが最もシンプルなのではないかと思います。

ato=mae.replace(/[\r\n]/g,"");

修正ユリウス日

シリアル値

エクセルで経過日数を求めるには日付同士を単純に引き算すれば求められます。
エクセルではシリアル値という値を使って日付を管理しているからです。シリアル値は1900年1月1日を「1」、2日を「2」として延々と日数を数えた値です。

例えば、2001年2月18日から2004年1月1日までの経過日数を求めてみます。
2001年2月18日のシリアル値は「36940」で
2004年1月1日のシリアル値は「37987」ですので、引き算して
37987-36940=1047(日)となります。 (さらに…)

alertとpromptのどちらを使うか

ブックマークレットで、取得した何らかの結果を表示させるにはアラートまたはプロンプトを使う。

javascript:(function(){alert('sample');})()
javascript:(function(){a=window.prompt('title','sample');})()

promptを使った場合は、IEならば、文字列がテキストボックスに出力され、選択状態になるので、コピーが簡単である。

ブックマークレットで目的のウェブサイトを開く方法

ブックマークレットを使って特定のページを開く場合は次のような方法があります。

同じウィンドウで開く

javascript:(function(){document.location.href=URL})()

別のウィンドウで開く

javascript:(function(){window.open(URL)})()

モニターで長さを測る方法

目の前にパソコンはあるのだけれど、定規がない場合にパソコンのモニターで長さを測る方法です。WindowsXPで使えます。

スタート-コントロールパネル-画面を開き(デスクトップ上で右クリック-プロパティでも可)、設定タブを選択してください。
詳細設定をクリックすると「DPI設定」のところに「96DPI」などと書かれています。これは画面が1インチあたり96ピクセルであることを表します。以下、96DPIを前提に。

今、HTMLを使って10センチ(100ミリ)の線を書きたいとします。
1インチは25.4ミリですので、96×100÷25.4=378(ピクセル)となります。
次のように書くと幅10センチの細長い四角が描かれます。

<img src='temp.png' width='378px' height='20px'>

JavaScriptで書くならば次のような感じで。長さが変えられます。

var mm=100;//10センチならば「100」ミリ
var dpi=96;
var mmpi=25.4;//1inch=25.4mm
var pxl=mm*dpi/mmpi;
document.write("<img src='temp.png' width='"+pxl+"px' height='20px'>");

10mm
20mm
30mm
40mm
50mm
60mm
70mm
80mm
90mm
100mm

「13日の金曜日」を羅列する

今日は13日の金曜日。今年は3回ありました。来年は1回だけ。

2000年から10年間の「13日の金曜日」を羅列するコード(JavaScript)は次の通り。

function fri13(){
  var s="";
  for(i=0;i<120;i++){
    d=new Date(2000,i,13);
    if(d.getDay()==5){
      s+=d+"<br>";
    }
  }
  return(s);
}

あと、昔、こんなものを作りました。
次の13日の金曜日-換算ゲングル
「次の13日の金曜日」と入力すると、次の13日の金曜日はいつなのかが表示されます。元々は単位の換算をするプログラムです。

はてなハイクとTwitterのAPIの違い

はてなハイクのAPIはTwitterと互換性があるとのこと。
私はJavaScriptではてなハイクとTwitterの過去の投稿を抽出しているのですが、確かに同じコードで動きます。

しかし若干、異なる点があるので、書いておきます。
(さらに…)

JSONに関するメモ

JSON形式のデータは次のような文字列で表される。

[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}]

JavaScriptではそのまま配列変数として使える。
※この場合は2次元の配列となる。

recs=[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}];
alert(recs[1]["name"]);

このようにすると「satou」と表示される。
※0番目からカウントしたときの1番目の「name」である「satou」が表示される。

JSON形式のデータが外部ファイルのときは次のようにする。
※この例では外部ファイルは「test.json」である。

req = new ActiveXObject("Microsoft.XMLHTTP");
req.open("GET","test.json",false);
req.send();
text=req.responseText;
recs=eval("("+text+")");

ここでポイントはevalを使うことである。
単に「recs=text」としてしまうと

recs='[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}]';

と同じことになり、文字列として読み込んでしまう。
evalを使うとJavaScriptで使える形式に変換してくれる。

JSONはXMLよりもシンプルであり、JavaScriptにおいてはCSVよりも簡単に扱える。

text="1,suzuki;2,satou";

を配列に読み込むには

recs=new Array();
lines=text.split(";");
for(i=0;i&lt;lines.length;i++){
  recs[i]=lines[i].split(",");
}

のような手順が必要である。
JSONならば

text='[{"id":"1","name":"suzuki"},{"id":"2","name":"satou"}]';
recs=eval(text);

で済んでしまう。

JSON形式のデータは途中に改行が入っていても構わない。また入れ子にすることもできる。

[
  {"id":"1","name":"suzuki"},
  {"id":"2","name":"satou"},
  {"id":"3","name":"yamada",
    "kodomo":{"namae":"ichiro","age":"5"}
  }
]

このような書き方ができる。

recs[2]["kodomo"]["namae"]

とすると「ichiro」が取得できる。
また

recs[2].kodomo.namae

と書いても取得できる。

新しい記事 | 古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報