SSブログ

URL短縮機能をJavaScriptで使用したい。無駄な足掻き [プログラミング]

続けてFirefoxのブックマーク内にあるJavaScriptのお勉強です。

あとで読む、のブックマークツールバーのソース

javascript:(
function()
{
	var%20s=document.createElement("scr"+"ipt");
	s.charset="UTF-8";
	s.language="javascr"+"ipt";
	s.type="text/javascr"+"ipt";
	var%20d=new%20Date;
	s.src="http://atode.cc/bjs.php?s=eb5514219709&d="+d.getMilliseconds();
	document.body.appendChild(s)
})();



こっちはSo-netのカンタン記事投稿のやつ。こっちの方が新しくウィンドウを開くから、比較的にやる事は近いのかな?

javascript:(
function()
{
	window.open('about:blank','nw');	// 空でウィンドウを開いて
	id = 'hogehoge';			// 自分のID
	host = 'http://blog.so-net.ne.jp';	// 何?
	jo1 = document.createElement('script');	// エレメントを作ってる(エレメントって?)
	jo1.type = 'text/javascript';		// エレメントとやらのタイプなんだろうけど
	jo1.src = 'http://blog.so-net.ne.jp/_common/js/bookmarklet/editEntry.js';	// 
	document.getElementsByTagName('head')[0].appendChild(jo1);	// 実際にデータを送る?
})();



つまるところ、共通するところを見ると打開点がありそう。appendChild()ってのが何やってるのかがよく分からない。他にもわからないところがあるので、じっくり見ていく。



まず始めに、意味不明なところは、hostっていう変数。他ではこの変数を使っている形跡がないから、組み込み型の変数なんだろうと思われ。

hostっていうプロパティは、area、location、Linkのものらしい。「オブジェクト.host」で書いて意味があると思うんだが、今回のようにオブジェクトなしで組み込み変数っぽく使われている場合はどうなんだろう。省略している場合は、どういう意味を持つのかがわかればいい。こういうところはきっちりしておかないと、ソースをコピーしてきて動いたからいいか、で済んでしまう。それは後々応用が利かないので、きちんと知っておいた方がいい。

locationはwindow.locationの略みたい。最上層オブジェクトだから省略可能で、open()とかの混同を避けるためには明示的に書くべき、みたいなことが持ってる本に書いてあった。だけど、hostっていうのは複数のオブジェクトにあるプロパティだから、略すとどっちのプロパティを指してるんだかわかんない。というか、多分別物だという気がする。

hostっていうのは、URLのホスト名とポート番号、っていうのはどれも一緒。そもそも、設定する必要ってあるのかな? 消して使ってみる。ないと上手くいかないので、きちんと展開先のホスト名は指定しておかないといけないらしい。単体でのhostの正体はわからないが、ホストURLは設定しておかないとダメらしい。

次のcreateElement()なんだけど、持ってる本にも、Webで古めのリファレンスにも載ってなかった。要するにエレメントを作るってことは、名前からして見ての通りだけど、パラメーターに与える文字列が何があるのかとか知りたい。そうじゃないと、これで何ができるんだかがわからない。

ええと、挿入するHTMLタグを引数にとるみたいですね。この場合scriptタグってことです。elementなオブジェクトのプロパティを設定してあげて、getElementsByTagName()で、指定タグのエレメント全取得をする。んで返るオブジェクトが配列で、それらの番号で中身を指定できるわけです。この場合、[0]なので一番始めに出て来るエレメント、という事ですかな。

appendChild()でhead要素にscriptエレメントを追加するってことなんですが、何やってんだかわかんないな。本で読むとtypeってのは色々なオブジェクトにあるプロパティなんだけど、「document.フォームオブジェクト名.elements[i].type」ってのが適合しそう。

srcってのは、操作するファイルなのかな?
 http://javascriptist.net/docs/js_ref_ext.html
むーsrcっていうプロパティはimage.srcしかなくて、それを使っているとはあまり思えんのだが…。本を見てもimageのプロパティしかない。alert()でオブジェクトを見てみると、[object HTMLScriptElement]と出てきた。ううむ、当たり前の内容が出てきたが、中身はわかんないのね。これでは、どうやって発動したページの情報を渡してるんだかが全然わからん。また、行き詰まりか。

上のリンクのページはなかなかよく考えられてはいるものの、Firefoxのバージョンは1なので情報が古すぎる。とほほの何とかはもっと古い。googleで示されるサイトは古くからあるものがPageRankでは有利なので、もうちょっと新しく出てきた関数などのキーワードで検索をかけなくてはいけないみたい。Firefoxを作ってるMozillaの一次情報が一番いいんじゃないかと思い出してきた。英語とかはあんまり読みたくないんだよねぇ、日本語みたいに斜め読みがしにくいから。


何となく分かった事は、

・appendChild()で任意のページに情報を送る事ができること
・受け側にそれなりの仕組みがないと受け取れなさそう

ということです。ちょっとJavaScriptのリファレンスが古くて、正直何をやっているのかが分からない面が多かったので、ググって新しめな情報を検索しておこうと思った。

タグ:JavaScript
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0