ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

リンク先に、後から情報を載せるJQuery

2014-02-19 17:30:28 | JavaとWeb
デブサミ2014の

【14-B-2】グリーを支えるデータ分析基盤の過去と現在
http://www.slideshare.net/devsumi/14b2

の21シート目

おお、これ「かわゆい」作ってみましょう!




■お題

あるサイトをみると、リンク先に、アクセス遷移結果などが
でるというもの。
つまり、

と外部にたいしては表示しているけど、
社内では

のように、遷移したパーセントが見えるというもの。




■前提

・あるページに対して、すべてのリンク先と、遷移したパーセントを
 JSON形式で返すWebAPIなり、データファイルなりがあるとする。

 たとえば、今、ページのIDが123だとすると、

 data123.txt

 というファイルの中に、

{
	"http://www.yahoo.co.jp": "23.4%",
	"http://www.google.co.jp": "76.6%"
}  


のように、ページID123のページ内で、Aタグで書かれているリンク先URLと
遷移したパーセントをJSON形式で書いてある。

なお、ブラウザはIE7




■やることの概要

(1)上述のリンク先とパーセントを返すサイトにAJAXでアクセスする

(2)その結果を受け取ったら、
    $.each($("A"),function () {
   で、すべてのリンク先に対して
      2-1 リンク先URLを取得し
      2-2 位置を取得し
      2-3 $(this).offset()で、絶対位置を取得
      2-4 DIVタグで書き出す。そのとき、
        読み込みデータ[リンク先URL] 
        で、書き出すパーセントが取得できる。

(3)表示用に、適当にCSSを作って、クラス設定しておく




■ソースファイル

こんなかんじ

<!doctype html>
<HTML>
<head>
<style type="text/css">
.mymsg {
background: yellow;
opacity:0.8;
filter: alpha(opacity=80);
z-index:100;
position:fixed;
}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script>
mydataurl="data123.txt";
$(function(){
$.ajax({
type: "POST",
url: mydataurl,
dataType:"json",
success: function(msg){
draw_msg(msg);
},
error: function(XMLHttpRequest, textStatus, errorThrown){
msg="--- Error Status ---";
msg=msg+"\n"+"status:"+XMLHttpRequest.status;
msg=msg+"\n"+"statusText:"+XMLHttpRequest.statusText;
msg=msg+"\n"+"textStatus:"+textStatus;
msg=msg+"\n"+"errorThrown:"+errorThrown;
alert(msg);
}
});
});

function draw_msg(msg)
{

$.each($("A"),function () {
myurl=$(this).attr("HREF");
myoffset=$(this).offset()
toppos=myoffset.top;
leftpos=myoffset.left;
mystyle ="top:"+toppos+"px;left:"+leftpos+"px;";
buf= "<DIV class='mymsg' style='"+mystyle+"'><B>"+msg[myurl]+"</B></DIV>";
$(this).prepend(buf);
});
}

</script>
</head>
<body>

<A HREF="http://www.yahoo.co.jp"><B>やふー</B></A>
<A HREF="http://www.google.co.jp"><B>ぐーぐる</B></A>
</body>
</html>






■ちなみに・・・

これだと、常に出てしまうので、

<script>
mydataurl="data123.txt";

以下の、関数をかいてあるところを

<script>
mydataurl="data123.txt";
</script>
<script src="mymsg.js"></script>

のように、mymsg.jsという別ファイルに追い出し、

・外部に公開するときにはmymsg.jsの中身を空っぽ
 にしておく→ふつうにリンクしか出てこない

・社内で使う場合は、mymsg.jsの中に、scriptタグの中
 $(function(){
  $.ajax({
  :

 function draw_msg(msg)
  :
を書いておく

・なお、サイトによって、ajaxでアクセスする先
 mydataurl="data123.txt";
 のdata123.txtが変わる。

・では、あるサイトに、どのようなリンク先があるというのを、
 どうやって登録するのか?

 mymsg.jsに、1回だけ
$.each($("A"),function () {
    URLを取ってきたら、
    AJAXで、サーバーのリンク先登録APIを呼び出す
 }

 みたいな感じを書けばいい。
 そのプログラムがおわったら、mymsg.jsを上記の
 「社内で使う場合」のものに、置き換える。

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 品質は、後付けできるか? →... | トップ | ハッシュ化と暗号化は違う。... »
最新の画像もっと見る

JavaとWeb」カテゴリの最新記事