URLを置換するjavascript
テンプレートを使っていたり、DBの情報を書き換えたくないけど、
ブラウザ側で対処してくれとかそういう諸事情で
なぜかhtmlファイルを触らせてもらえない場合につかう・・・。
しかもjQueryは使えない場合。
function getElements() { var elements = document.getElementsByTagName("A"); for(i=0;i<elements.length;i++){ if(elements[i].href.indexOf("yahoo.co.jp") > 0){ elements[i].href = elements[i].href.replace("yahoo.co.jp", "impressAAA.co.jp"); }else if(elements[i].href.indexOf("google.com") > 0){ elements[i].href = elements[i].href.replace("google.com", "impressBBB.co.jp"); } } } window.onload = function(){ getElements(); }
<a href="http://www.yahoo.co.jp/">a</a> <a href="http://www.yahoo.co.jp/">b</a> <a href="http://www.yahoo.co.jp/">c</a> <a href="http://www.google.com/">d</a> <a href="http://www.yahoo.co.jp/">e</a> <a href="http://www.msn.co.jp/">f</a> <a href="http://www.yahoo.co.jp/">g</a>
コピーライトの年を自動的に変えてく
既存の大量のHTMLファイルのコピーライトの年を強引に変える
jQuery必須で。
<div id="footer"> <p class="copyright">Copyright 2005 XXXXXXX Co. Ltd. All Rights Reserved.</p> </div>
$(document).ready(function() { var now = new Date(); var year = now.getFullYear() $("#footer .copyright").html('Copyright '+year+' XXXXXXX Co. Ltd. All Rights Reserved.'); });
IE9でLightboix.jsが動かない件
既知の問題らしく、prototype.jsを最新版に差し替えれば解決。
http://www.prototypejs.org/download
イメージマップの境界線を消す方法(改訂版)
<map name="Map" id="Map"> <area shape="poly" onFocus="this.blur();"
「onFocus="this.blur()"」を追加する。
ただし、IE6,7では消えるが、IE9,safari,Chrome,Firefoxでは線が出てしまう。
なので、下記のサイトを参考に、CSSとonFocusを追加する。
http://blogs.yahoo.co.jp/k3_labs/2756417.html
.nonborder { border:none; outline:none; }
HTML
<map name="Map" id="Map"> <area shape="poly" onFocus="this.blur();" class="nonborder"
のように記述してやると、IE6,7,8,9,safari,Chromeでは消えるが、Firefoxでは線が出てしまう。
原因としては、「onFocus="this.blur();"」があるためなので、
function nonborder(){ var ua = navigator.userAgent; var chkFF = ua.indexOf("Firefox",0); if(chkFF<0){ this.blur();//もしくはthis.focus() } }
HTML
<map name="Map" id="Map"> <area shape="poly" onFocus="nonborder()" class="nonborder"
というようにFirefox以外の場合にblur()を効かせるように記述すると、
今度はIE9で効かなくなる。
ということで苦肉の策だが、最終的に下記のように。
Firefoxの場合のみ、javascriptでonFocusを空にする用にさせた。
.nonborder { border:none; outline:none; }
HTML
<map name="Map" id="Map"> <area shape="poly" onFocus="this.blur();" class="nonborder"
var ua = navigator.userAgent; var chkFF = ua.indexOf("Firefox",0); if(chkFF>0){ if($("#Map area").length){ $("#Map area").attr("onFocus",""); } }
これで良いのだろうか??
PageButeを絶対パスじゃないようにする
スカイアークシステム社の静的ページ用ページ分割プラグイン「PageBute」は
php化することなくページ分割を実現可能なため愛用しているのですが、
書き出されるファイルへのパスが絶対パスなのです。
http://www.skyarc.co.jp/engineerblog/entry/2642.html
通常の運用では問題ないものの、
MTで確認サーバでファイルを書き出す→「本番環境」へうp(うぴぃー)
という運用の場合に問題発生です。
手書きで書き換えるのも漢ですが、CMSを使う意義にかけますので、
困った際に改変したところの覚書です。
sub _make_base_path内の
my $base_url = $site_url . $relative_path . $file_name;
このへんで最終的なURLを生成しているっぽいので、
#my $base_url = $site_url . $relative_path . $file_name; my $base_url = $file_name;
という感じで$file_nameのみにしました。
ページ分割でファイルのディレクトリが変わることはないので$file_nameのみでいいのかな?と。
jQueryでクロスフェードを簡単に?
とりあえずライブラリとか使わずにクロスフェードさせてみた。
- 同じタイミングで下の画像をフェードイン、上のレイヤーの画像をフェードアウトさせる。
- 上のレイヤーの画像がフェードアウト完了後に、フェードインさせた画像と同じものを上のレイヤーに表示。
idがph03なら下の画像に既存のph03.jpgが入って、フェードインされるイメージ。
$('.btn').mouseover( //マウスオーバーでボタンにセットされてるidを取得して画像を差し替えるってことで function() { var id = $(this).attr('id'); //ボタンのidを取得 var ph = "images/"+id+".jpg"; //取得したidからファイル名を生成 $(".photo img.base").hide().fadeIn('slow').attr("src",ph); //下に画像をセットしてフェードイン $(".photo p.over-photo img.over").fadeOut('slow', //まず上のレイヤーの画像をフェードアウト function(){ $(".photo p.over-photo img.over").show().attr("src",ph); //フェードアウト完了後に上のレイヤーに新しい画像(フェードインさせた画像と同じ)をセット } ); } );
<div class="photo"> <img src="images/ph01.jpg" class="base" /> <p class="over-photo"><img src="images/ph02.jpg" class="over" /></p> </div> <p class="btn" id="ph03">ボタン</p>
.photo { position:relative; } .over-photo { position:absolute; top:0; left:0; z-index:10; }
これであってるのかな?