■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 最新50

『スキン』 かちゅ〜しゃをカスタマイズする

237 :なな〜しゃさん :2004/02/22 23:47 ID:/PRsIsc2
TEST

238 :なな〜しゃさん :2004/02/22 23:50 ID:/PRsIsc2
>>237で、エラーが立っちゃいました。

239 :なな〜しゃさん :2004/02/23 00:42 ID:VlTOgL1k
name_sub("&MAIL", "&NAME")

name_sub("\\\\\\\\\\\\\\\", "<b>なな〜しゃさん</b>")
に置換されるからだな。

script中に &NAME とか何が置換されるかわからないモノを書くのはマズいと思った。

こういうのはどうだ。


Header.htm に追加。
<!-- ここから -->
<script>
function mailname_sub(pn) {
mn=document.all.item("nowmailname");
mn.id = "mailname" ;
mna=mn.children.tags('A');
if (0==mna.length) return ;
if ('mailto:sage'==mna(0).href) {
b=document.body.createTextRange();
b.moveToElementText(mna(0));
b.execCommand("Unlink");
mn.style.color="red";
}
}
</script>
<!-- ここまで -->

NewRes.htm と Res.htm の &MAILNAME のかわりに
<span id="nowmailname">&MAILNAME</span><script>mailname_sub()</script>


mn.style.color="red";
のところは、好きな色に。

240 :なな〜しゃさん :2004/02/23 01:25 ID:0IdVnjzU
>>239
エラーでなくなりました。
ありがとうございます。

241 :239 :2004/02/23 08:11 ID:4+6Axbmw
書いて置いてなんだが、
これは、何の目的で sage てるレスの名前の色を変えるの?
sage忘れた人を吊るし上げるため?

242 :なな〜しゃさん :2004/02/24 00:58 ID:wMaCn3ko
メール欄に
1.何も書いてない
2.sage以外の何か書いてる
3.sageと書いてる
4.sage+何か書いてる

↑の4色変化は特にエチー系とか神がパス書いてたりするスレとかで重宝するのよ・・w

243 :なな〜しゃさん :2004/02/24 01:32 ID:Cpak4yy2
&MAILNAME ではなく
&NAME と &MAIL をベタで書いて、
&MAIL欄を色変化させた方が(コピペとかの関係で)便利じゃないかと思った。
けど、その手の板とかスレの事情は知らないので
&MAILNAME色変化の良さが分からないだけなのかもしれない。

244 :なな〜しゃさん :2004/02/24 01:41 ID:67XsCAY2
ちえスキンのところに置いてある

2ch風味+age,sageチェック(9/23最新)
 2ch風味のスタイルシート及び名前をage,sageに応じて4色に色分けするJavascript

に同梱されてる「chie_mail.js」なら、たいていのスキンに簡単に組み込めるよね?


245 :なな〜しゃさん :2004/02/24 03:59 ID:Cpak4yy2
あんまし簡単じゃなかった……
ちえスキンベースの改造スキンには簡単に組み込めるかもしれんけど、
自作スキンにはちょっとめんどい。

それでも、出来る事は出来るけど、
判定/変換ルーチンが何度もタイマー起動されて、
全部のmail欄のsage判定をし続けるのはどうかと思った。
たいした負荷じゃないとは思うけど。

しかも、(環境やスキンによるのかもしれないけど)
document.readyState が いつまで経っても complete にならなさそうなので
いったん全部のmail欄を処理しきればタイマーをゆっくりにするという配慮が
無駄足を踏みつづけてるし。


監視タスクをタイマー起動するという手法自体がどうかと思うので、
できれば何かのイベントで処理したいというのが正直なところ。
ただ、1回目のスレの読み込み完了は document.onreadystatechange で拾える感じだけど、
リロード時の読み込み完了を拾うイベントを見つけることが出来なかった。
いいモノがあれば教えてくださし。

246 :skin30-2さく〜しゃ :2004/02/24 04:57 ID:wZPIQo12
>>245
ほとんど指摘のとおりです。

>全部のmail欄のsage判定
グローバル変数でループ開始時のdts.lengthを確保しておいて、
次のタイマー起動ではそこまででデクリメントを止める、みたいな感じに書いた記憶も
あるのですが、大して体感が違わないので外したのかもしれません。

>readyState==complete
ゾヌ、ギコ、ABoneだけですので、かちゅとかは延々タイマーでループし続けます。
それゆえ、タブの数が増えると大変なことになります。

そもそも、skin30-2,3でRes.htmlのDOM構造をいじらずに色を変えるための物ですので、
速度と安定性でしたら、239のように要素を特定して中身を変更するやり方が一番いいと思います。

>リロード時の読み込み完了
リロード開始のイベントなら、どうにかなるなーと思って、
 キーボードでの更新→onkeyDownで、Ctrl+Rを検出
 クリックでの更新→onmouseOverでevent.srcElement.tagName=="BODY"で検出
とか考えてみましたが、テストしてないです。

247 :なな〜しゃさん :2004/03/04 01:52 ID:KlG2kjm+
>246
高速化してみました。こんなのどうでしょうか。

setTimeout(mailCheck,0); // お好みで
var mailTimer=setInterval(mailCheck,500);
var dts=document.getElementsByTagName("DT");
var ddElement=null;
function mailCheck(){
 var dt=ddElement?ddElement.nextSibling:dts.item(0);
 while(dt){
  var name=dt.childNodes[1];
  var mail=dt.childNodes[2];
  ddElement=dt.nextSibling;
  dt=ddElement.nextSibling;
  if(!name||!mail) continue;
  /* 中略。判別の部分 */
 }
 if(document.readyState=='complete') setTimeout("clearInterval(mailTimer)",1000);
}

248 :なな〜しゃさん :2004/03/04 21:07 ID:+6zY/PTw
洩れのとこのHeader.htmではこうなっています。

function get_name(arg_name,arg_mail)
{
var mail = "";
var color = "forestgreen";
if (arg_mail == "sage" ) color = "blue";
else if (arg_mail.length > 0) mail = ( " <font color=\"dimgrey\">" + arg_mail + "</font>" );
if (arg_name.indexOf('◆') >= 0) color = "darkviolet";
if (arg_name.indexOf('★') >= 0) color = "coral";
var name = ( "<font color=\"" + color + "\">" + arg_name + "</font>" );
if (arg_mail == "sage" ) name = ( "<A href=\"mailto:sage\">" + name + "</a>" );
return (name + mail);
}

これをなるべく表示を変えずに>>237などでエラーが出ないようにする方法を教えて下さい。

249 :なな〜しゃさん :2004/03/04 21:46 ID:ZMW1CYog
>>239
今見たら、漏れのスキンも"&MAIL"なんてスクリプトに渡しているせいで
237でエラーになっちゃった。
早速innnerHTMLなんかで書き換えるタイプに変更しようと思う。

で、提示されたタイプだとidがひとつのHTMLに複数表れちゃうと思うけど
大丈夫なの?

250 :なな〜しゃさん :2004/03/05 10:49 ID:/XJQ6+Jg
スクリプトに &MAIL などを入れると、
メル欄や名前欄に '\' が入ったときに正しく処理されない。
エラーが出ない場合もあるが、'\' の数が違うとかの問題は避けられない。

ところで、idがひとつのHTMLに複数現れちゃう件だが、

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpisdk/dhtml/references/properties/id.asp
>スクリプト内で使用するために、識別子は英文字で始まる英数字でなければならない。アンダーバー("_")を含む特殊文字も使用できる。
>1つのドキュメントの中ではidは重複してはならない。もし、1つのドキュメントの中で同じ識別子があった場合には、そのオブジェクトはコレクションとして認識され、現れる順番によって区別される。
>このプロパティは読み出し専用である。

とあって、重複しちゃダメとか言いながら、
いっぱい有ったらコレクションとして認識されるとか言っちゃってるし、
よく分からない。

251 :なな〜しゃさん :2004/03/05 11:18 ID:XWM52eG2
id="nowmailname&RESNUMBER" みたいにレス版をつけたらいいと。
呼び出しのときに
mailname_sub(&RESNUMBER)とすると

198KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail(省略可)

0ch BBS 2004-10-30