ビルトイン関数のオーバーライド
[Javascript] ビルトイン関数のオーバーライド
例ではwindow.openをオーバーライドしています。
下記の英文の記事にあったもの
http://stackoverflow.com/questions/9172505/how-to-override-the-window-open-functionality
タブで開かず新しいウィンドウで開いてくれちゃっていたので
そこんとこ追加。
window.open("http://www.google.co.jp"); はお試し用です。
Firefox IE8 IE9 Safari Chromeで動作を確認。
インターセプター発動!みたいな。
var orgOpen = window.open; window.open = function(url,windowName,windowFeatures){ if( windowName == undefined) { windowName = "_blank"; } if( windowFeatures == undefined ){ windowFeatures = ""; } alert("override!!"); return orgOpen(url, windowName,windowFeatures); } window.open("http://www.google.co.jp");
他社のアフィリエイトでJavascriptを読込むと検索窓が出てきて
Submitするとwindow.openするコードがあって
飛び先の前に自前のアフィリエイトタグを付与したいって要件で利用。
特定のドメインに飛ぶ場合のみ、特定の処理をするって感じ。
var orgOpen=window.open; window.open=function(url,windowName,windowFeatures){ if(windowName==undefined){windowName="_blank";} if(windowFeatures==undefined){windowFeatures="";} var churl; regobj = new RegExp('特定のドメイン'); if( url.match(regobj)!=null ){ churl="http://自前のアフィリエイトタグ付与URL&url="+encodeURIComponent(url); }else{ churl = url; } return orgOpen(churl, windowName,windowFeatures); }
うーん、もうちょいスマートな書き方ないのかな。