jquery:指定した画像が読み込まれたら実行
2012.03.28
すべての画像が読み込まれた後にスクリプトを実行する場合は
前回のJS:ロード完了時に実行でほぼ足りてしまうのですが、
指定した画像が読み込まれたときに実行する場合や、
後から画像を読み込む場合には不十分です。


画像ありのRSSを読み込もうと思い、

--------------------------------------------------------------------
$("#rssList img").load(function(){
  // 処理
});
--------------------------------------------------------------------

と書いたのですがブラウザによっては上手くいかず。。

↓こちらのサイトでぴったりのことが記事にされていましたので
参考にさせていただきました。

jqueryで画像のロード完了後に実行 - downstairs lab
http://www.stairsdesign.jp/blog/2011/07/jquery.html


■方法
imagesLoadedというプラグインを使用します。

https://gist.github.com/268257

こちらのサイトからJSファイルをダウンロードして<head>内で読み込み、
--------------------------------------------------------------------

<script type="text/javascript" src="js/imagesLoaded.js"></script>

--------------------------------------------------------------------

loadをimagesLoadedに書き換えれば完了です。
※2013/10/2 $(function(){}); を追加しました。
--------------------------------------------------------------------
$(function(){
  $("#rssList img").imagesLoaded(function(){
    // 処理
  });
});
--------------------------------------------------------------------
| コメント(0)
スマートフォン用サイトでアドレスバーを隠す
2012.03.28
スマートフォン用のサイトでよくアドレスバーを隠す設定になっているところを多く見かけます。
ということで検索していろいろなページを参考にやってみました。
一画面で表示できる範囲がひろくなっていい感じです。
赤字部分が必須です。

---------------

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, user-scalable=no, 
initial-scale=1, maximum-scale=1">

<title>スマートフォン用サイト</title>

<style type="text/css">
body {
  min-height: 416px;
  -webkit-text-size-adjust: none;
}
</style>
<script type="text/javascript">
window.onload = function(){
setTimeout("scrollTo(0,1)", 100);
}
</script>
</head>
<body>


サイトの中身


</body>
</html>

---------------

1点注意点が。
このアドレスバーを隠す設定をしている場合、
idを使ったアンカーリンクがきかなくなります。
ご注意を。
| コメント(0)
JS:ロード完了時に実行
2012.03.21
JSの実行タイミングとして「ページの読み込みが完了したとき」がありますが、
いまだに忘れて調べなおしてしまうのでメモです。

■HTMLコードを読み込み終わった時点で実行
要jQuery。タイミング的によく使います。

-------------------------------------------------
$(function(){
// 処理
});

または
$(document).ready(function(){
// 処理
});
-------------------------------------------------


■すべて読み込んだ後に実行
画像などもすべて読み込んだ後に実行。

-------------------------------------------------
window.onload=function(){
// 処理
}
-------------------------------------------------

・jQueryを使う場合
-------------------------------------------------
$(window).load(function () {
// 処理
});

または
jQuery.event.add(window, "load", function(){ /* 処理 */ });
-------------------------------------------------

・HTMLに書く場合
HTMLのbodyタグに書くことでも同じ処理ができます。
-------------------------------------------------

<body onload="処理">

-------------------------------------------------
| コメント(0)
googleアナリティクスで外部リンクのクリックをトラッキング
2012.03.07
googleアナリティクスは解析用のコードをページに埋め込む形式のため、
外部サイトへのリンクについては計測することができません。

その場合、解析タグを設置するのと合わせて、
<a>タグにonclickで次のようなコードを仕込むことで
クリックを計測することができるようになります。

---------------------------------------------------------------------------------------

<a href="xxx.html" onclick="javascript:_gaq.push(['_trackPageview', '仮想URL']);">

---------------------------------------------------------------------------------------

-- 2013/7/16 追記 --
上記の他に、下記のような記述の仕方もありました。

---------------------------------------------------------------------------------------

<a href="xxx.html" onclick="javascript:_gaq.push(['_trackEvent', '仮想URL']);">

---------------------------------------------------------------------------------------

_trackPageview と _trackEvent の違いになります。

_trackPageview は仮想ページビューを使う方法で、サイト全体のページビューも増えます。
_trackEvent はイベントトラッキングを使うので他の計測結果には影響しません。

基本的には外部サイトヘのリンクに設置するものですので、_trackEvent のほうが良さそうです。
逆にPDFなどへのリンクに仕込む場合は _trackPageview が良さそうですね。

-- 追記ここまで --


外部サイトへのリンクと書きましたが、
解析コードを仕込めない画像やPDFへのリンクも計測できるため
使いどころはいろいろとありそうです。

ちなみに、解析コードのバージョンによって記述が違うようで、
上記の記述が使えるのは↓のような非同期型の場合になります。

---------------------------------------------------------------------------------------
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXXXX-X']);
_gaq.push(['_trackPageview']);

(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
---------------------------------------------------------------------------------------
| コメント(0)