楽天ウェブサービスAPI+jQueryでブログにアフィリエイトを簡単自動表示する方法
仕事でjQueryを使ったAPI接続を試す機会があったので、僕のブログで出ているアフィリエイトリンクもJavascriptでがんばれないか試してみた。前はPHPでカテゴリやタグをつかってAPIを叩いていたが、Javascriptならクライアントサイドで動くしなにかとアレかと思いまして。
以下のソースとなる。
disableを使った二度押し防止
昔、「Javascriptでボタンのダブルクリックを抑制する」という記事でも書いたんですが、これを書いたのが今から5年前ぐらいの情報でして、ちょっと前にはてブで同じような記事があったので、ブックマークしていました。
で、最近(とはいっても数年前)はどうやってるのかみてみると、ボタンをdisableにして押せなくしてるみたいですね。どんなもんかということで試してみました。
参考:二度押し防止の onsubmit で disable にするやつ by Drk7jpさん
このページのはじめに載ってた方法だと、prototype1.6.jsでは戻ったときとかにボタンが押せなくなってしまっていたので、「onsubmit で disable にするやつ by 鷹の島さん」の方法を使いました。
テストで使ったJSPは以下。あんまりよくなさそうだけど、時間稼ぐために頭に3秒Sleepしてます。
<% String countString = request.getParameter("count"); int count = 0; try{ count = Integer.parseInt(countString); count++; }catch(Exception e){ count = 1; } %> <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> <script type="text/javascript" src="./utility.js"></script> <script type="text/javascript" src="./prototype-1.6.0.2.js"></script> </head> <body> <form action="index.jsp" method="GET"> <input type="text" name="string" value="" /> <input type="hidden" name="count" value="<%=count%>" /> <input type="submit" name="subsub" value="OK" /> </form> <p> string=<%= request.getParameter("string") %><br /> count=<%=count%><br /> subsub=<%= request.getParameter("subsub") %> </p> </body> </html>
たしかにこれだと、うまくいくのですが、1秒後にdisableが戻るのがなんか気持ち悪い。これはAPサーバにリクエストを投げるときに、1秒以上かからない前提でやってるのかなー。
Javascriptメモ
head要素内に記述する場合 <html>
<head>
<title>タイトル</title>
<meta http-equiv=”Content-Script-Type” content=”text/javascript”>
<script type=”text/javascript”>
<!–
// ここに処理を記述
// –>
</script>
</head>
<body /> 外部ファイルに記述する場合
拡張子が「js」のファイルを用意します。そしてそのファイルにJavascriptを記述し、外部ファイルとしてHTML内で読み込むことも可能。
// test.js
function test(){
alert(“テストです”);
} <html>
<head>
<title>JavaScript Sample</title>
<script type=”text/javascript” src=”test.js” />
</head>
<body /> THをJavascriptでインサートしたいんだけどできないのだ。
http://www.y-adagio.com/public/standards/tr_dom1/level-one-html.html
function addRule(tableName){
table = document.getElementById(tableName);
row = table.insertRow(table.rows.length);
cell = row.insertCell();
cell.innerHTML = “aaa”;
cell = row.insertCell();
cell.innerHTML = “bbb”;
newElement = document.createElement(‘th’);
newValue = document.createTextNode(‘中身’);
appendElement = newElement.appendChild(newValue);
row.appendChild(appendElement);
alert(row.hasChildNode());
newElement = document.createElement(‘td’);
newValue = document.createTextNode(‘中身’);
appendElement = newElement.appendChild(newValue);
[...]
Javascriptでボタンのダブルクリックを抑制する
ダブルクリックによる2重投稿を防ぐために使用する。
isSubmittedフラグにより、クリックされたかどうかを判断し、 されていなければ、3秒(3000ミリ秒)待ってから、フラグを変更し、 trueを返す。ようは、1回目のクリックから3秒間はフラグがtrueの為、 2回目のクリックが無効になる。
方法
フォームには以下のように。
onsubmit=”return formSubmit()”
JavaScriptファイルは以下のように
// クリック判定フラグ
// falseの場合は、クリックされていないを意味する
var isSubmitted = false;
function formSubmit(){
// クリックされていないかどうか
if(!isSubmitted){
// フラグをtrueに変更する
// これにより1回目のクリックがまだ実行中の為、
// 2回目のクリックが無効となる
isSubmitted = true;
// 3000ミリ秒後にフラグをfalseに戻す
// 3000ミリ秒の間は、フラグがtrueの為、Submitできない
setTimeout(“resetIsSubmitted()”, 3000);
// Submitする
return true;
} else{
// Submitしない
return false;
}
}
function resetIsSubmitted(){
// フラグをfalseに戻す
isSubmitted = false;
}
Javascriptでメーラーを起動する
メーラーに文字を設定して開くには
mailto:[email protected]?subject=サブジェクト・・・
のようなURLを作成し、そこへ遷移するとうまくいく。
書き方 function startMailer(){
var mailto = “mailto:[email protected]”;
mailto = mailto +
“?subject=サブジェクト&body=本文です。%0D%0A改行もできます。”;
location.href= mailto;
}
Javascriptでスクロール位置を覚える
同じ画面に遷移すると、ページの一番上に遷移してしまう。 そこで、スクロール位置を記憶しておき、同じ場所が表示されるように工夫。
方法
まずは画面の位置を取得
function viewYl(form){
alert(“この位置は” + document.body.scrollTop + “です。”);
}
添付ファイルを追加するときなどは、「追加」ボタンが押されたときに「scrollTop」の位置をhiddenなどで飛ばしてあげるといい。
遷移後に、その値を受け取り、onloadで自動的に移動させると、画面遷移後も同じスクロール位置にいる気分になれる。
Javascriptで自動遷移
ページを自動で遷移させる場合はこんな感じで。refresh使ってます。
<?xml version=”1.0″ encoding=”UTF-8″ ?><br /><!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.1//EN” “http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd”><br /><html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ja”><br /><head><br /> <meta http-equiv=”content-type” content=”application/xhtml+xml; charset=UTF-8″ /><br /> <meta http-equiv=”content-style-type” content=”text/css” /><br /> <meta http-equiv=”refresh” content=”1; url=/kingdom/faces/login/login.jsp”><br /> <title>藤原王国</title><br /></head><br /><body><br />自動的に遷移しない時は<a href=”/kingdom/faces/login/login.jsp”>自動的に遷移しない時はこちら</a>をクリック。<br /></body><br /></html><br /><br />
僕について
Dai Fujihara
A hero can be anyone.
藤原大はマネージャでありアジャイル実践者だ。そして、プロジェクトリーダー、チェンジ・エージェント、アジャイルコーチ、トレーナーでもある。彼はまたRedmine、Jenkinsといった開発を支援するツール環境の整備や、アジャイル開発を活用した創造的なソフトウェア開発の支援を行っている。さらに、趣味は沖縄離島巡りらしい。
ここ最近の人気
開発ツールを使うと「思いやり」が減る(前半) #swat… 1,020 view(s)
開発ツールを使うと「思いやり」が減る(後半) #swat… 494 view(s)
3年使ったRedmineの使い方について共有したい10の… 315 view(s)
チームとタワーを創造せよ!マシュマロチャレンジでチームビ… 265 view(s)
Javaで入力チェックに使える正規表現まとめ… 119 view(s)
Redmineプラグイン開発 – 史上最高のチームプラグ… 96 view(s)
LinkStationのようなNASを買ってもバックアッ… 80 view(s)
BOOKSCANで本を電子化した結果レビューと注意してお… 73 view(s)
DAOとかDTOとかVOとかEntityとか… 67 view(s)
社会人10年目をなんとか乗り越えたからエールを贈る… 57 view(s)
永久保存の本
Jonathan Rasmusson (著), 西村 直人 (翻訳), 角谷 信太郎 (翻訳)
アジャイルサムライ―それはソフトウェアを顧客に届ける猛々しきプロフェッショナルだ。本書では、圧倒的なアジャイルプロジェクトの姿を見せる。2011年爆発的にヒットしたアジャイル開発に情熱を持つエンジニアに届けたい本。
Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。(イントロダクションより)
Venkat Subramaniam (著), Andy Hunt (著), 木下 史彦 (監訳), 角谷 信太郎 (監訳)
アジャイルな習慣とは一体何なのか?本書ではプラクティスを交えながら、その姿勢を読者に問いかけている。世代や役割をこえて色褪せない「アジャイル」に対する良書。Amazonレビュー
メアリー・ポッペンディーク (著), トム・ポッペンディーク (著), 高嶋 優子 (翻訳), 天野 勝 (翻訳), 平鍋 健児 (翻訳)
「トヨタ生産方式」を源流にする「リーン開発」をソフトウエア開発に取り入れるための具体的方法を紹介した本です。本書は、リーンの7大原則を「価値」「ムダ」「スピード」「人」「知識」「品質」「パートナー」に整理し、ソフト開発現場にどうしたら効果的に適用できるかを、多くの実例を交えながら具体的に説明します。
タグ
Agile ant Apache bash Eclipse GlassFish install Java Javascript kobo Linux log4j Management Maven Open Source PHP Pukiwiki Python Redmine Ruby Ruby on Rails Scrum Spring Struts Struts2 Subversion Test Tomcat Trac VBA Web WebDriver WebLogic Windows WordPress 働く 勉強会 嫁(ベータ) 思い出し笑う 我思う 旅する 映画/ドラマ 英語を話す 読むと聞く 過去を語るアーカイブ









