Neo Inspiration

Avatar

中の人:jakkrokk (HN統一しました) がphp,javascript,air,flex などなど好き勝手書いてます。仕事は主にWEBシステムの設計と開発、SEO全般など。

javascript で style.display したらフォーカスが消えた

javascript で style.display したらフォーカスが消えました。

こんな感じのJSを作っていて

function clickable(){
    document.getElementById(‘hidden’).style.display = “none”;
    document.getElementById(‘visible’).style.display = “block”;
}

こんな感じのinput

<input type=text id=clickable onBlur=clickable() />

<input type=text id=hidden />
<input type=text id=visible />

みたいな設定になったときに
id=clickableでTABキーおすとフォーカスが消えます。
どこをクリックしてもフォーカスしません。(実際はしてるんだけどカーソルが見えない)

こんな感じ:テストHTML

たぶんhidden(描画しない設定)になったとこにフォーカスが当たってそっからでなくなる?
ような気がします。

描画しない display を 単に表示しない visiblity にすれば問題は解決するけど、
レイアウトの問題もあるので、display のままでなんとかならないかなーと試行錯誤したら
Tabを押したときに強制的にどっかをフォーカスするといいみたいです。

でもどっかフォーカスといって
document.getElementById(‘visible’).focus();

ではだめみたいです。
処理の順番の関係かな。

この場合は
document.getElementById(‘clickable’).focus();

を付け加えればうまくいきます。

yahooディレクトリの直リンのやり方

ちょっとまえに直リンに変わって騒いでいたので
どうやってるのか気になったので見てみました。

これが実際のHTMLです。

<a href=”****” onmousedown=”return catrd(this,’&l=SIT&sid=2075187116&ssid=2076442857&loc=1&sig=0101cb926a7020f1c40d20a1169d8935&rd=’,”,’site’);”>*****

でこれがjsのソース

function catrd(o,r,f,t){
var pat=/:/;
var href=o.href;
var rbase=’http://srd.yahoo.co.jp/CAT’;
var cbase=’http://dir.yahoo.co.jp/proc/?m=redir’;
var tourl=href.replace(pat,’%3A’);
if(f!=”"){
f=’?frc=’+f
}
if(t!=”site”){
url=rbase+r+”*-”+tourl+f
}else{
var enc=encodeURIComponent?encodeURIComponent:escape;
url=cbase+r+enc(href)
}
o.href=url;
o.onmousedown=”";
return true
}

適当にコメントつけてみると

function catrd(o,r,f,t){
var pat=/:/; //正規表現のパターン代入
var href=o.href; リンクのhref属性を代入
var rbase=’http://srd.yahoo.co.jp/CAT’; //URL代入1
var cbase=’http://dir.yahoo.co.jp/proc/?m=redir’; //URL代入2
var tourl=href.replace(pat,’%3A’); //正規表現で:を%3Aに置き換え
if(f!=”"){//fがブランク以外の例がないのでよくわからんけど置き換えてる
f=’?frc=’+f
}
if(t!=”site”){//内部リンク系だったら
url=rbase+r+”*-”+tourl+f
}else{//外部リンク系だったら
var enc=encodeURIComponent?encodeURIComponent:escape; //encodeURIComponentが使えたら使う、使えなければescape
url=cbase+r+enc(href) //URIエンコードしてURL作成
}
o.href=url; //Aタグのhref属性を書き換え
o.onmousedown=”"; //onmouse属性を空っぽに
return true
}

こんなかんじかな。

ようはクリックしたら動的にURLを変えてカウントしてるだけですが。

これをちょいいじれば

//引数o:this r:クリックカウントのURIに渡したい引数
function test(o,r){
var u=’http://***’; //クリックカウントURI
var e=encodeURIComponent?encodeURIComponent:escape; //encodeURIComponentが使えたら使う、使えなければescape
h=u+r+e(o.href); //URIエンコードしてURL作成
o.href=h; //Aタグのhref属性を書き換え
o.onmousedown=”"; //onmouse属性を空っぽに
return true
}

こんなかんじにして
クリックカウントのファイルからURLに飛ばせれば自分で使えますね。
テストしてないのでエラーでるかも

PHP Arrayを簡単にグラフに

amchartsの続きですがw

http://neoinspire.net/archives/58

で紹介した amcharts を結構使いまくっていて、
ついでにと簡単に使えるクラスを作ったので上げときます。

Class.CreateGraph.php

追記:200711/07
改良してる方がいらっしゃったので一緒に載せておきます
http://d.hatena.ne.jp/pirokyun/20071104/1194161217#c

(続きを読む…)

Continue Previous page Next page

Twitter