jQueryで作るAjaxな検索フォーム(テスト)

技術的にはだいぶ今さら感ある話題ですが作業のまとめとして。

サンプル

表題のフォームというのはこんな感じのです。
#sampleSearchResult a { border: none !important }

仕様

  • 検索語句を入力して「Flickrで検索する」を押すと僕のFlickrでの検索結果を表示する
  • 「クリア」を押すと検索語句と検索結果を削除する
  • 検索語句入力欄でリターンキーを押しても検索を開始する

続きを読む

【メモ】 imgを子要素に持つアンカーにクラス名を付与する 【jQuery】

(function() {
$('#main').find('a').each(function(){
if($(this).children('img'))
$(this).css('border', 'none');
});
})();
リンクを貼っているのがテキストの場合には下線を引きたいけど、画像の場合には下線を引かないようにしたいと言う場合にCSSで何とかならないかと試行錯誤したけど無理そうだったのでjQueryで。勉強がてら。 参考書を手に組み立てると上みたいになるんだけどなんか無駄が多い気がする… 継続審議。

修正(2011/11/29)

上手く動いてませんでした。次のように修正。
(function() {
$('#main').find('a').each(function(){
$(this).children('img')).parent().css('border', 'none');
});
})();

続きを読む

画面遷移せずにポップアップを実現できるjQueryプラグイン「prettyPopin」

prettyPopin is a jQuery plugin that serves as a modal box. It is easily customizable and proved a lightweight solution to quickly and easily display content in context. It provides a nice way to display simple content or simple forms.
 
jQueryさえ利用していれば非常に少ない量のコードで簡単に実装でき、 CSSによるデザインのカスタマイズも柔軟に出来るという点で非常に便利です。 (異なるドメインのページを読み込むことは出来ませんが) 導入に当たっては以下のサイトを参考にさせていただきました。

参考

簡単にポップアップを実現するjQueryプラグイン「prettyPopin」 | HAPPY*TRAP なお、prettyPopin()を呼び出すときの設定については、 公式サイトのドキュメントに仕様がありますが、 prettyPopin documentation | Stéphane Caron – No Margin For Errors 合わせて姉妹プラグイン「prettyPhoto」のドキュメントを読むといろいろ捗ります。 prettyPhoto documentation | Stéphane Caron – No Margin For Errors 「prettyPopin」は「prettyPhoto」の簡易版という感じなのでしょうかね。

続きを読む

【メモ】 画像サイズ読み込みの遅延処理

前回のエントリはこちら。 【メモ】 jQueryライブラリ読み込みの遅延処理 – nplll 前回のエントリでは、jQueryライブラリの読み込みを待って、画像の縮小表示を行うということをしたのだけど、 それでもまだ上手く縮小できないことがあって調査を進めた結果、

  1. 画像の読み込みが追いつかないことがある
  2. 画像を読み込んでいるのに画像の高さの取得に失敗することがある
    • なぜか取得できる高さは「13」
という事象が起こりうることが分かりました。 「なんで?」かはしらん(苦笑) とりあえず対策を盛り込みたいと思います。

続きを読む

【メモ】 jQueryライブラリ読み込みの遅延処理

読み込んだAmazonの商品画像のサイズを、これで調整しているのですが、 【メモ】 画像の縦横比を維持したまま、画像サイズを一定の範囲内に縮小 – nplll どうも調整に失敗することが多くて上手く行かない。 どうやら、jQueryを読み込む前に処理を行おうとして失敗してるみたい。 GoogleからjQueryライブラリを読み込んでるせいかな? おや。 解決策: jQueryを読み込み終わるのを待って処理をするようにSetTimeoutを設定する。

参考

うのらぼ。 – 【JavaScript】jQueryの読み込み待ちとか関数の処理待ちとか遅延処理っぽいこと

続きを読む

【メモ】 画像の縦横比を維持したまま、画像サイズを一定の範囲内に縮小

縦横共に300px以内でかつ縦横比を維持したまま画像を縮小したかったので簡単なJavaScriptを書いてみた。 画面内の画像全てに適用するとするとこんな感じ。

var maxWidth  = 300;
var maxHeight = 300;
var elements = document.getElementsByTagName("img");
for(i=0;i height) {
elements[i].width = Math.min(width, maxWidth);
} else {
elements[i].height = Math.min(height, maxHeight);
}
}
まぁはっきり言うと、「縦横比の維持」は基本的にブラウザ任せですね。 片方だけ指定すればもう片方は自動で計算される…というのは仕様的にどうなのだろう。 なお、幅だけを一定以内に収めたければこれをimgタグに置くだけで良いのだけど、
onload="this.width = Math.min(this.width, 300)";
縦長の画像(例えば縦1,000px/横100px)の場合に逆に拡大されてしまってはみ出る。 それを回避するためには、縦か横かどっちかデカイ方に対して適用すればOKと。 なんか処理を共通化する良い方法がありそうな気がするけど…まぁいいか。とりあえず。

続きを読む

Amazonアフリエイト用テスト

目的

Amazonの商品ページを開いて、そこからなるべく少ないステップでブログエントリに貼り付けるアフリエイト用パーツを取得できるようにする。

やったこと

  1. ASINなどを与えるとその商品の情報を取得し整形して表示するプログラムを作成
  2. Amazonの商品ページでアフリエイト用パーツを取得するBookmarkletを作成

1. ASINなどを与えるとその商品の情報を取得し整形して表示するプログラム

大体次のような感じ。
  • PHPベース
  • フレームワークはSymfony
  • PEAR::Services_Amazonを使用
【メモ】 PEAR::Services_Amazonを使って商品情報を取得(署名認証対応) – nplll サービスURLはこんな感じ。
  • //amazon.nplll.com/asin/[Amazon ASIN] → 特定の商品の情報を表示する
あ、一応オープンになってますが、あくまで自分向けなので突然サービス終了することもありますし、 アフリエイトIDを追加することも出来ません。

2. Amazonの商品ページでアフリエイト用パーツを取得するBookmarklet

AmazonのページからASINを抜き出して整形するBookmarklet
javascript:function%20getID(id){return%20document.getElementById(id);};var%20u=location.href,d=/(http:\/\/www\.amazon\.(com|co\.jp))/;if(u.match(d)){t=getID("btAsinTitle").innerHTML;r2=RegExp.$2;if(r2=="co.jp")l="amazon.jp/dp/";else%20if(r2=="com")l="amzn.com/";else%20exit();l='';prompt("%E3%80%8C"+t+"%E3%80%8D",l);void(0);}
例えばこのページで実行すると↓ Amazon.co.jp: THE BEST OF スチャダラパー1990~2010: スチャダラパー: 音楽 こんなのが取れます。↓
実際の表示はこんな感じ↓

続きを読む

【小ネタ】 パスワードを保存できないサイトでパスワードを保存する 【Firefox】

ある程度どうでも良いサイトの場合、パスワードを保存するリスクより利便性の方が上回るので、 結構積極的に保存してたりするんですが、サイトによっては保存できない設定になっている場合があります。 例えば…アフリエイトのMicroAd。 BTパートナー|行動ターゲティング,ブログ広告,リターゲティングのマイクロアド 左上にログインフォームがありますが、ここで入力したパスワードは保存されません。 (保存しますか?と聞かれない)

続きを読む

今さらながらjQueryを触っているなど

LightBox導入→prototype.js必須みたいな流れでprototype.jsを使っていたので、 競合するというjQueryをずっと触っていなかったのだけど(LightBoxだけなら何とかなるけど 他にもprototype依存のライブラリをいろいろ入れてしまってたし)、新しいサイトを作る中で どうせならjQueryに切り替えようぜってことで触ってみた。 テスト的な使い方として、

sampleCode
みたいなパーツをページ内にバラバラと撒いておき、
$(function () {
$('.sample').each(function () {
var sampleCode = $(this).text();
$(this).html('')
});
});
みたいなコードで変換するみたいなことをやってみた。 DOMについては慣れないと混乱するけど、Web+DB Vol.60の実践入門がだいぶ役に立った。 で、これが存外によい。 処理も速いけど、何より書くのが楽。 いや、良いのは評判としてもちろん聞いていたのだけど、それ含めても存外に良い。 無理してでも導入すべきだったか。むう。 もうちょっと色々やってみよう。

続きを読む