■スレッドリストへ戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 最新50

read.cgi 2006―JavaScriptはCGIの夢を見るか

780 : 株価【700】◆cZfSunOs.U :2006/09/02(土) 12:34:59 ID:hPP8wKRg0
>>731に対応ブラウザの判定を入れる(ただし dso では判定にかかわらず
全部 read.html に振る)とこうなるかな.IE 4 やネスケ 4 では
try / catch でエラーになるだろうけど,エラーでスクリプトが止まって
URL 書き換えも実行されないなら,それはそれでよしってことでw
----------------------------------------------------------------------
try {
    if (/MSIE (?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko\/|Opera\/(?:[89]|\d{2,})\D/.test(navigator.userAgent)
        || location.hostname == "dso.2ch.net") {
        var isIE6 = navigator.userAgent.indexOf("MSIE 6.0") > 0;
        for (var i = 0; i < document.links.length; i++)
            if (/^http:\/\/(?:\w+\.)?(?:2ch\.net|bbspink\.com)\/test\/read\.cgi\/?/.test(document.links[i].href)) {
                document.links[i].normalize();
                var data = document.links[i].firstChild.data, isEqual = document.links[i].href == data;
                document.links[i].href = document.links[i].href.replace(/read\.cgi(\/)?/, function(s, slash) { return "read.html" + (slash ? "/" : ""); });
                if (isIE6) {
                    document.links[i].firstChild.data = isEqual ? document.links[i].href : data;
                    document.links[i].parentNode.replaceChild(document.links[i].cloneNode(true), document.links[i]);
                }
                else if (isEqual)
                    document.links[i].firstChild.data = document.links[i].href;
            }
    }
} catch(e) {}
----------------------------------------------------------------------
さらに,検索エンジン等外部リンクから飛んできた場合に対応ブラウザなら
read.html に振るとするとこうかな.dso では %{HTTP_USER_AGENT} の行は
コメントアウトで.
----------------------------------------------------------------------
RewriteCond %{HTTP_USER_AGENT} MSIE\s(?:[6-9]|\d{2,})\D|rv:(?:1\.(?:[89]|\d{2,})|[2-9]|\d{2,})\D.*Gecko/|Opera/(?:[89]|\d{2,})\D
RewriteCond %{HTTP_REFERER} ^http://
RewriteCond %{HTTP_REFERER} !^http://(?:\w+\.)?(?:2ch\.net|bbspink\.com)/(?:\w+/(?:|(?:subback|index)\.html)$|test/read\.(?:html|cgi)[#/]?)
RewriteRule /?read\.cgi(/.*)?$ /test/read.html$1 [R]
----------------------------------------------------------------------

317KB
新着レスの表示

スレッドリストへ戻る 全部 前100 次100 最新50

0ch BBS 2004-10-30