リファラーが取れない・・・IE限定

またまたIE地獄

javascript経由でページ遷移しなくてはならくて
飛び先でリファラーを取得しようとしても
location.hrefで遷移するとリファラーが取得できない・・・。

対処法

後からDOM操作で追加するでもよいのでformタグを追加します。

<form method="get" action="リンク先URL" id="Id名"></form>

javascriptはこんなかんじ

function clickAction()
{
location.target= "_blank";
document.getElementById("Id名").submit();
}

遷移先に変数を渡したい場合はリンク先URLのおしりに直接くつけるのではなく
inputタグを利用するとうまくいきます。
理由はわかりません。

<form method="get" action="リンク先URL" id="Id名"><input type="hidden" name="id" value="hoge"></form>

直リンのFlash(ブログパーツとか)
だとリファラーが取れないのでjavascript経由で取得することになるんですが
飛び先でリファラー取得する場合
まさかのIE地獄でしたとさ。

Tags: ,

flashがどこで開かれたか知りたい

swfが開かれているurlを調べたい
javascriptで簡単にできました。

location.href

例)

<script type="text/javascript">
alert(location.href);
</script>

サンプル

これだけです
こいつをflashvarsでSWFにおくればflashでもどこから来たのか解析できますね。

Tags:

Javascriptで正規表現

xmlのvalueの中にhtmlタグが入っていたので正規表現をつかってタグを抜きました

<script type="text/javascript">
function func() {
alert("<a href=’#'>タグじゃま!!</a>".replace(/<\/?[^>]+>/gi, ""));
}
</script>

※タグをぬいたれボタンを押すとhtmlタグを抜いた「タグじゃま!!」の部分がアラートで表示されます

正規表現をわかりやすく説明してくれてたサイト発見したので
わからなかったら読むといいです。

参照サイト はじめての正規表現

あとはこのサイトがかなり便利だったのでこれも

参照サイト humming bird : JavaScript - 正規表現 パターン・チェック

Tags:

JSでのエラーを受け取る方法

ブラウザが返却するエラーをキャッチしたい。
たとえばxmlのノードをパース失敗したときundefinedで返して欲しいのに
ブラウザでエラー、
その時点でjavascriptの処理が終わっちゃいますよね。

実は今回ガジェットを作る際、
amazonから返してほしいノードが商品によって
あったりなかったりして非常にこまりました。

んでこのtry-catch文

try{
// 何らかのプログラム
}catch( e ){
alert( e ); // バグの内容をダイアログで表示する
}

これをつかうとエラーをキャッチしてその後catch文の処理を行い
そのまま次のコードへ進行できます。

Ajaxやるにはほぼ必須というのも頷けます。
javascriptのデバッグにつかえますね。

参考サイト ウィキブックス JavaScript try-catch文 

Tags: ,

iGoogleのガジェットつくってみた2

この間つくったスイーツランキングのソースを利用して
任天堂wii-予約受付中ランキングガジエットをつくってみた

<script src="http://www.gmodules.com/ig/ifr?url=http://hosting.gmodules.com/ig/gadgets/file/102498631954277920987/wiiRnk.xml&amp;synd=open&amp;w=320&amp;h=375&amp;title=%E4%BB%BB%E5%A4%A9%E5%A0%82Wii-%E4%BA%88%E7%B4%84%E5%8F%97%E4%BB%98%E4%B8%AD%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0&amp;border=%23ffffff%7C3px%2C1px+solid+%23999999&amp;output=js"></script>

ここからigoogleガジェットをつくるときのメモ

Tags: , , ,

iGoogleのガジェットつくってみた

詳細はまた書きます
iGoogleを使ってる人はまずここでGETしよう!
今すぐ!Amazon売れ筋スイーツランキング

http://www.google.co.jp/ig/directory?hl=ja&url=hosting.gmodules.com/ig/gadgets/file/102498631954277920987/sweetRnk.xml

Tags: , ,

残念な事にJSでxmlを・・

だめだ・・。

XMLHttpRequest使って「いろんな所のblogまとめrssリーダ」
を作ろうとしてたらクロスドメイン制限でひかかっちゃうわ。

IEは閲覧できるけどアラート出ちゃうし
firefox3なんて表記もされずエラー出ちゃってるし

JSだと相手のサーバー側でクロスドメイン制限回避しかないみたいだね、

他ドメインのRSSはサーバ側で読込んでパースして
クライアント側で受け取ったほうがいいみたい。

でもまあなんか一応読込む部分のソース残しとくかー
同一ドメイン・クロスドメイン制限回避済だったら使えるわけだしね

クリックするとソースがでます

Tags: ,

getElementsByTagNameを使った操作

getElementsByTagNameと正規表現を使って文字列を操作してみましょう。

flashサイトつくったんだけど

Actionscriptとか中心にかいてます

<p>flashサイトつくったんだけど</p>
<p>Actionscriptとか中心にかいてます</p>

<input type="button" onClick="changeStr()" value="変換">
<script type="text/javascript">
function changeStr()
{
var objName = document.getElementsByTagName("body");
var value = objName[0].innerHTML;

value = value.replace(/Actionscript|flash/g,"<span style=’color:#0000ff; font-size:35px;’>うんこ</span>");
document.getElementsByTagName("body")[0].innerHTML = value;
}
</script>

Tags:

getElementByIdでDOM操作

きのうきききりんにきいたんだけど

getElementByIdで「き」を強調してやります!

<p id="textKi">きのうきききりんにきいたんだけど</p>
<div style="margin:20px;"><button onclick="chageElement()">「き」を大きくして赤くします</button></div>
<script type="text/javascript">
function chageElement()
{
var word = "き";
var answer="";
var objName = document.getElementById("textKi");
var value = objName.innerHTML;
for(var i = 0; i < value.length; i++)
{
if(value.slice(i,i+1) == word)
{
answer += "<span style=’font-size:30px; color:#ff0000;’>"+value.slice(i,i+1)+"</span>";
}
else
{
answer += value.slice(i,i+1);
}
}
document.getElementById("textKi").innerHTML = answer;
}
</script>

Tags: ,