+ JavaScript の質問用スレッド vol.95 +at HP
+ JavaScript の質問用スレッド vol.95 + - 暇つぶし2ch164:Name_Not_Found
12/01/09 17:24:23.80
>>162
プッ

165:Name_Not_Found
12/01/09 17:25:20.67

         __,. -─- 、_
.         /三≧x≦三≧ミミ、_
      /三三≧x、≦三≧xミミミ、
.      /三≦幺      `ー=ニ三≧、
     /彡'彡'            ミミi
      |彡彡             ミミミ|
      |彡彡  ,.......、         ミミミ!
   r‐'、彡__/〃 ̄_`ヽ___, ‐≠≒ミ、 ミミミL
    {  V  ! ''´ゞ'ヽノ  | ,rュ、_ 「`レ' }
   ヽ ノ  ` ー一'´   丶、__,ノ   ,〃
    い     /r'´   ヾ、,    ィ /
      し1   /    ¨゙ー'¨´  ` /   f
        !   {  ーrrrrrrrrr;、_,     ト'
       ',      `二二´     ./
       ', ヽ               /
        }    、____,/ / |
     _,.‐个、   ー-一  '´ , 个.、_
 __, -'´:::::::::| \       ,.-'´  l!:::::::`:ー.、_

   バカカ・コイツァー [ Bacca Koitzer ]
      ( 1928 ~ 1938 ドイツ )

166:Name_Not_Found
12/01/09 17:25:24.85
>>160
それってサイトにevalコードが仕込まれてるってわからないと
できない話だよね?evalのリスクじゃなくね?


167:Name_Not_Found
12/01/09 17:26:37.25
>>160
XSSでevalを利用するってむしろありえなくね?

168:Name_Not_Found
12/01/09 17:26:41.28

     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶

169:Name_Not_Found
12/01/09 17:27:00.16
>>160
具体的にどんなコードよ

170:Name_Not_Found
12/01/09 17:27:01.80
>>166
ププッ

171:Name_Not_Found
12/01/09 17:27:23.70
evalを使わないと処理できないと思う場合、
それは、大抵実装がおかしい。
evalを使わない実装にするのが当たり前。
非推奨な物を、わざわざ使うなんてのはナンセンス。

172:Name_Not_Found
12/01/09 17:27:47.88
>>155>>158
ここまで言って理解できない>>164って一体・・・。
よくこんな無能でeval以外は不可能とか言えたものだ

173:Name_Not_Found
12/01/09 17:28:25.51
evalが無ければXSSの心配が減る。
余計な心配事をわざわざ作る必要がないじゃん。

174:Name_Not_Found
12/01/09 17:28:29.23
わざわざeval経由で悪質なコード実行する意味を感じない
Javascriptが有効ならそのままコード走らせればいいじゃん

175:Name_Not_Found
12/01/09 17:29:13.43
アレだろ、もう皆一瞬で答え出しちゃったけど
自分だけわからなかったのが恥ずかしくて引くに引けない状況なんだろw

最初口数多かったのに今じゃ煽るだけw

176:Name_Not_Found
12/01/09 17:29:20.83
>160顔真っ赤www

177:Name_Not_Found
12/01/09 17:30:10.74
>>174
詭弁乙

178:Name_Not_Found
12/01/09 17:31:30.90
eval坊は絶対にevalが必要なケース挙げてみろよw
挙げれないだろw

179:Name_Not_Found
12/01/09 17:32:11.17
129 名前:Name_Not_Found[sage] 投稿日:2012/01/09(月) 16:55:59.14 ID:???
>>121
電卓作るときとかeval使わないと厳しい

137 返信:Name_Not_Found[sage] 投稿日:2012/01/09(月) 17:09:52.62 ID:???
>>130
>>134
じゃあやってみろよ
eval使わずにinput以下の計算式いれて答えさせるんだろ?

((1+2+3)*2+19*(30*2))/2

155 自分:Name_Not_Found[sage] 投稿日:2012/01/09(月) 17:19:10.23 ID:???
>>137
フツーにNumberと正規表現で一発じゃねぇかよ・・・。


これ情報科のFラン大学生でも即答できんじゃね?

180:Name_Not_Found
12/01/09 17:32:17.68
先にeval使って問題が起きるケース挙げろよ

181:Name_Not_Found
12/01/09 17:32:18.20
教えて!Ziddyちゃん - eval()の危険性の具体例を教えてくれませんか?
URLリンク(ziddy.japan.zdnet.com)


182:Name_Not_Found
12/01/09 17:32:56.32
>>178
>>137が絶対にevalが必要なケースだったんだろw

183:Name_Not_Found
12/01/09 17:34:05.62
冬厨が沸いてんのか

184:Name_Not_Found
12/01/09 17:34:23.87
前置き
・個人サイトに脆弱性があっても実害はない
 利用者がそのサイトを信頼していない限りいくらインジェクションやらXSS出来ても害はない

evalで脆弱性になる条件
 ・利用者がサイトを信頼してアカウントなりを作ったりしてること
 ・外部ドメインからのPOST/GETを受け入れて入力値を出力すること(検索語句等)
 ・入力値を検査せずevalで利用すること

結局、わざとらしく作らないと無理

185:Name_Not_Found
12/01/09 17:35:36.90
そのサイトのどこにevalのコードが仕込まれてるかどのようにevalが使われてるか分からないと
悪質なコード仕込めなくね?
わざわざサイトの構造調べてまで仕込むだけのメリットがあんの?

186:Name_Not_Found
12/01/09 17:35:52.41
>>182
あーなるほど、JavaScriptのJの字もわからないような奴が
必死に俺難しいJS書けないからevalは必要!って訴えてたわけね

187:Name_Not_Found
12/01/09 17:36:52.60
いや~、あのね・・
evalは確かに全部危険って訳じゃないよ。
何もかも危険なら、そんなの残ってない訳だから。
ただ非推奨な訳よ、今後使えなくなったら動かない訳よ、そのスクリプト。
それに、evalは使う人にスクリプト書いてもらう訳よ。
エラーチェックとか、しない訳よ。するにしても、すごい厳格にしないといけないし、
そのチェックで本当に完璧かなんてわからない訳だよ。

そもそも、「俺ん所個人サイトだから大丈夫」とかって話じゃなくて、
プログラムの作法的に間違ってる訳で、危険があるかもしれない物を、
大丈夫なんじゃないの?なんて考えで使ってる時点で品格を疑う。

eval使わなくてよい実装にするのが基本であり当たり前。

188:Name_Not_Found
12/01/09 17:37:19.08
計算式実行するだけのライブラリとか無いの?

189:Name_Not_Found
12/01/09 17:37:19.80
>>185
>>173

190:Name_Not_Found
12/01/09 17:38:50.90
お前ら揉めてないで
みんなで協力してsafeEval関数ライブラリー作れば解決なんじゃね?

191:Name_Not_Found
12/01/09 17:39:09.15
互換性残すためにeval残してるって
さっさと見切りつけて削除しないJavascriptだかECMAScriptだかの仕様と
ブラウザの仕様が悪い

192:Name_Not_Found
12/01/09 17:39:44.65
>>188
それ作ってこのスレで販売すれば売れるな!

193:Name_Not_Found
12/01/09 17:42:03.37
インタプリタ言語の大長所の1つをあっさり切り捨てる必要ないじゃない
evalが完全不要ならコンパイル言語にした方がセキュリティとかたくさん長所がある

194:Name_Not_Found
12/01/09 17:43:40.59
Javaはコンパイル後もeval使えたような

195:Name_Not_Found
12/01/09 17:44:17.07
javaにevalは存在しません

196:Name_Not_Found
12/01/09 17:46:35.79
コンパイル後にevalが使える言語もあるが
コンパイル後のファイルにパーサもどきが一緒に入ってる変態設計
evalライブラリみたいなもん

197:Name_Not_Found
12/01/09 17:46:43.61
正規表現で計算式分割とかかなり複雑じゃね?

198:Name_Not_Found
12/01/09 17:47:36.53
もうevalって名前も出すな

見ただけで吐き気がするわ(笑)

199:Name_Not_Found
12/01/09 17:47:45.08
>>155
だからコード張れ

200:Name_Not_Found
12/01/09 17:49:03.92
>>197
可能ってだけで一発で書けるようなもんじゃないよね


201:Name_Not_Found
12/01/09 17:49:19.46
>>199
プッ
>>186

202:Name_Not_Found
12/01/09 17:49:44.43
たかが一発で掛けるコードを出し惜しみする理由は出来ないから

203:Name_Not_Found
12/01/09 17:50:31.34
>>179
一発
即答
そんな平易なコードなのですか?

204:Name_Not_Found
12/01/09 17:51:10.68
請求表現は関数渡せば前後の文字抜き出しながらできるから
それでやったらいいんじゃない?

205:Name_Not_Found
12/01/09 17:51:37.69
逆ポーランドなんちゃらで取り出せばおk

206:Name_Not_Found
12/01/09 17:52:14.95
即答できるとはFラン大学生も随分と賢くなったものだな

207:Name_Not_Found
12/01/09 17:53:19.98
Fラン大学生は各種IT企業から引く手数多な人材なんだよ

208:Name_Not_Found
12/01/09 17:53:42.27
>>199
今回だけだぞ
var keisan=function(a){return function(b){return this[a](b)}}(function(a){return String.fromCharCode.apply(String,a)}([101,118,97,108]));
keisan('((1+2+3)*2+19*(30*2))/2');

209:Name_Not_Found
12/01/09 17:53:48.01
九九さえ出来ないやつがチラホラいるFラン大学生が即答とは
それなら小学生でも即答できそうだな

210:Name_Not_Found
12/01/09 17:54:07.02
>>155が今から一発で↓を計算してくれます
1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31

211:Name_Not_Found
12/01/09 17:54:46.18
はい、このスレの結論
次回からテンプレ載せ

・evalは完全不要です
・evalに関する発言は禁止です
・evalを使いたい人は向いてないのでJSやめなさい

212:Name_Not_Found
12/01/09 17:56:08.17
>>211
>>181のサイトリンクも入れとけ
具体例があってeval信者が減ること間違いなし

213:Name_Not_Found
12/01/09 17:58:53.88
>>210
ほらよ
謝罪はよ

t="1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31"

a=(new Function ("return "+t))();
alert(a)


214:Name_Not_Found
12/01/09 18:02:01.89
>>213
それってevalと同じようなリスクあるんじゃないの?

215:Name_Not_Found
12/01/09 18:02:49.82
>>213
new Function = eval 正規表現使うんじゃなかったの?

216:Name_Not_Found
12/01/09 18:03:03.65
>>214
は?しらねーし
eval使ってないからいいだろオラ

217:Name_Not_Found
12/01/09 18:03:27.43
>>208
仕組みはよくわからないけどスゲー

218:Name_Not_Found
12/01/09 18:04:25.21
>>217
えっ?w

219:Name_Not_Found
12/01/09 18:05:38.82
>>214
これで安全だな
function keisan(){return 46;}
keisan('1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31');

220:Name_Not_Found
12/01/09 18:06:03.21
結局Numberと正規表現を使われたコードは貼られなかった

221:Name_Not_Found
12/01/09 18:07:17.73
>>218
解説ヨロ

222:Name_Not_Found
12/01/09 18:10:29.55
>>218
>>213と同じじゃね?

223:Name_Not_Found
12/01/09 18:11:04.18
>>210
本当に一発でやられてクッソワロタw

こんなのも出来ないでeval必要とか言っちゃってるんだから恥ずかしい

224:Name_Not_Found
12/01/09 18:11:27.72
alert(String.fromCharCode.apply(String, [101, 118, 97, 108]));

225:Name_Not_Found
12/01/09 18:11:41.05
>>208
keisan('alert("やあ");');

あのなあ、この手の実装はjsonもそうだがEVAL使っていいんだよ。
正規表現で妥当性を検証してから後はインタプリタに任せる。これが一番高速で忠実な方法。

226:Name_Not_Found
12/01/09 18:13:03.36
>>224
evalワロタ

227:Name_Not_Found
12/01/09 18:13:19.65
186 返信:Name_Not_Found[sage] 投稿日:2012/01/09(月) 17:35:52.41 ID:???
>>182
あーなるほど、JavaScriptのJの字もわからないような奴が
必死に俺難しいJS書けないからevalは必要!って訴えてたわけね


> 210 返信:Name_Not_Found[sage] 投稿日:2012/01/09(月) 17:54:07.02 ID:???
> >>155が今から一発で↓を計算してくれます
> 1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31

ここまで言ってたのに完全に論破された馬鹿久々に見た

228:Name_Not_Found
12/01/09 18:13:43.30
>>220
早く謝罪しろ

t="1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31";
Number(/t/);
a=(new Function ("return "+t))();
alert(a);



>>225
強引な論展開乙

229:Name_Not_Found
12/01/09 18:13:44.80
>>223
おまえ恥ずかしくないの?

230:Name_Not_Found
12/01/09 18:14:31.07
>>229
プークスクス

231:Name_Not_Found
12/01/09 18:15:14.15
揚げ足取ろうにも、それら全てがコードで論破されてんのな

232:Name_Not_Found
12/01/09 18:15:44.87
>>228
あれ?セキュリティ上の問題があるからeval使うなって言ってたおまえらが
同じセキュリティリスクあるコード書くの?
すごいねプロのプログラマ

233:Name_Not_Found
12/01/09 18:16:04.23
>>137
こんな恥ずかしい奴始めて見た

234:Name_Not_Found
12/01/09 18:16:12.88
>228

               __‐`'´''"'マ          ____\   ー‐┐    |一
                Z.    __`ゝ          \      ノ´   ⊂冖
 ∧      /|   ゙仆斗┘リート=┬-、_      \    ー‐┐   ,/
/   ∨\/   |    `L,.っ,ノ u }ノ ノ   \      ,>   ノ´   \
         |__    兀.!_// i |     l、     く.   ー‐┐ ー|ー
ー‐┐ ー|一ヽヽ /  u' \ヽ‐'´  !|     ト、     \   ,ノ´   ̄匚ノ
 ノ´   ノ こ  /_____,  }j  ハ、  ヽ ヽ,___/    /  ー‐┐  ┼‐ヽヽ
ー‐┐  ニ|ニ.     / ___ノ /\_,≧/ u 人.   /     ,ノ´   ノ こ
 ノ´   ⊂冖   く  {上rン´  ,厶../ / ヽヽ   \    ||  ニ|ニ
ー‐┐  |     /    ̄   ノ{こ, /,〃   !|    \   ・・   ⊂冖
 ノ´   l.__ノ   \     ,.イ !l`T´ | /     |:|     /       |
ー‐┐ ー‐;:‐    \   //    l  |     |_|   ∠.、       l.__ノ
 ノ´   (_,     /   ヒ_ー--、_|ー、____,ノj┘    /        ┼‐
ー‐┐   /     /     \ ̄\ー`トー-<    /          ノ こ
 ノ´   \     \      \  ヽ  \  ヽ    ̄ ̄|
 | |   」z.___    >       \. ヽ.  ヽ   l      |/l   /|  ∧  /\
 ・・   /| (_,  /           ) lヽ   ',  l、      |/   | /   V
       ┼‐   \       , イ、_,上ハ   }  小          |/
      ノ こ     \     (乙≧='''"´ ,∠,__ノ/
      ┼‐ヽ    /           厶乙iフ/
      ノ ⊂ト  く               `¨¨¨´
                \

235:Name_Not_Found
12/01/09 18:16:47.35
>じゃあやってみろよ
>eval使わずにinput以下の計算式いれて答えさせるんだろ?

>((1+2+3)*2+19*(30*2))/2

236:208
12/01/09 18:17:02.63 s1gtT2R7
>>224,225
気付くとは思ったけど、ばれちまったかw

237:Name_Not_Found
12/01/09 18:18:09.60
>>232
はへ??
俺そんな事言ってないんだけど??

238:Name_Not_Found
12/01/09 18:18:52.69
goto文の使用していいか悪いかって話に似てるなぁ

eval使うしかないな。って思う前に、
eval使わないよう実装変えるにはどうすればいいだろうって考えろ

239:Name_Not_Found
12/01/09 18:19:10.01

               /|:::::::::::::::::::::ヽ.:.:.:.:、:.:.:.:、:.:.:.、.:.、.:.:.:.:.:.::`゛>
           /{::|:\:::::::\.:.:.:\.:.:.ヽ::.::.ヽ:.:.ヽ::::::::::.:.`゛ー- ..,__
: 何 :    /:|::',:ト、::::::ヽ、:.\:.:.:.\:.:.ヽ:.:.:\.:.:.:.:.:::.:.:.:.:::.::::_;:-'´   : : :
: が :   //:/:::|::',|::'、:::::::::\:.:\.:.:.ヽ:.:.:\:.:..\::::::::::::\、::::\    : : :
: 何 :  /!::|::l::::/|:::l:ヽ:\::ヽ:.:\:.:\.:::ヽ:.:.:ヽ:.:.:.:\::::::::::::\ ̄   : : :
: だ :   |/l::|::|::|:ト、:::::::::、、:ヽ、:.:.:.:::::::::::::::ヽ::::.:ヽ:.:.:.:.\:.:.:.ヽ:::\.   : : :
: か :   |::|::/l::|::|r‐ヽ:::::ヽ(ヽー,―\::::::、::::::::::ヽ::.:.::::::.:::::::ヾ. ̄   : : :
:    :   }//l::|:::|{(:::)ヾ、:::ヽ \!(:::) ヽ,:::ヽ:::::::::::::::::::::::::::::::::::ヾ、   : : :
: わ :.  |/l::|::|:::|ヽ==''" \:ヽ、ヽ=='" |:::::::::::::::::::::::::::::::::::ヽ、::::\
  か     / ',|::|:::|   /   `゛       |!::::::::::::::::::::::::::::ト、::ト、_` ゛`
  ら      l::!::::ト、  '、 _         ||::::::::::::::::::::::::ト:ヽヾ| | ̄ ̄ ̄`ヽ、
  な     r'"´||',::::',                 |:::::/l:::::|\:::ト、ヾ | |     / / \
  い   /   ll ',::', 、 ーこニ=-       /!::/ ヽ:::|  ヾ、  ノ ノ  /  ,イ   ヽ、
       ,'    |  '、:, \ --       ,. '´ |;'  l ヾ、.   //     / |    l: l
      |   |!  ヽ;  ヽ       /.:    i!  /   ゛// |l      / |      | |

240:Name_Not_Found
12/01/09 18:19:59.53
evalに反対してる奴らって別にセキュリティを考えてるわけじゃないんだね

241:Name_Not_Found
12/01/09 18:20:54.02
たぶん冬休みにJavascript始めたJaavscript歴1週間とかなんだろ
じゃなかったら頭がちょっと弱い子とか

242:Name_Not_Found
12/01/09 18:20:56.19
早く
計算式を計算してくれるライブラリを紹介するか
Numberと正規表現で計算するコードを書いてくれよ

243:Name_Not_Found
12/01/09 18:21:23.73
あんなにeval使うな取ってたのに出てきたコードが誤魔化しでワロタ
計算式を解析するコードがそんな数行で書けるわけないのにねw

244:Name_Not_Found
12/01/09 18:22:21.52
どうせ今必死にeval使わない方法でググってるんだろうwwwwwwwwwwwwwwwwwwwwwwwwww

245:Name_Not_Found
12/01/09 18:22:57.43
         ____   
       / \  /\ キリッ
.     / (ー)  (ー)\      
    /   ⌒(__人__)⌒ \    <じゃあやってみろよ
    |      |r┬-|    |      eval使わずにinput以下の計算式いれて答えさせるんだろ?
     \     `ー'´   /      ((1+2+3)*2+19*(30*2))/2
    ノ            \
  /´               ヽ              
 |    l              \
 ヽ    -一''''''"~~``'ー--、   -一'''''''ー-、.    
  ヽ ____(⌒)(⌒)⌒) )  (⌒_(⌒)⌒)⌒))

246:Name_Not_Found
12/01/09 18:23:55.84
とりあえずリレーでsafeEval作ろーぜ!

俺から
$=function (){}
$.safeEval=function(t){
return new Function("return "+t);
}




247:Name_Not_Found
12/01/09 18:24:20.32
いつからリアル中学生の溜まり場になったんだ

248:Name_Not_Found
12/01/09 18:24:27.80
なんで((1+2+3)*2+19*(30*2))/2なんて簡単な数式にしたんだろうか・・・。
難問だったのかなぁ

249:Name_Not_Found
12/01/09 18:24:38.73
逆ポーランドなんちゃら使えばいいだろ
計算式の文字列1文字ずつ取り出してはスタックに入れて
演算子出たら取り出して計算してスタックに入れると
文字列全部取り出したら結果出すってね

250:Name_Not_Found
12/01/09 18:26:00.62
なんか面倒な初心者がいてるなぁ・・・
evalを使わないで計算できるように自分で考えろよ・・・
何責任転換して、見つけれなかったらお前らが間違ってるみたいな事言ってんだよ。

251:Name_Not_Found
12/01/09 18:26:07.05
$=function (){}
$.safeEval=function(t){
return new Function("return eval("+t+")");
}


252:Name_Not_Found
12/01/09 18:27:20.81
だからJSLinux使えって言ってんだろ
eval坊はまずそれをできるまで試してからもの言えよ

253:Name_Not_Found
12/01/09 18:28:17.32
できたぞ!!
$=function (){}
$.safeEval=eval;


254:Name_Not_Found
12/01/09 18:28:44.43
荒らしとかキチガイってこーやって生まれるんだろうな
無知が知ったかして、叩かれ、引けなくなり反論するも、徹底的に叩かれ、憎悪が溜まり、復讐をと

イジメられる方にも原因はあるのよね

255:Name_Not_Found
12/01/09 18:29:22.89
【審議中】
    ∧,,∧  ∧,,∧
 ∧ (´・ω・) (・ω・`) ∧∧
( ´・ω) U) ( つと ノ(ω・` )
| U (  ´・) (・`  ) と ノ
 u-u (l    ) (   ノu-u
     `u-u'. `u-u'

256:Name_Not_Found
12/01/09 18:30:34.94
お前ら懲りずにまた1でも0でもない0.5くらいの事を
1か0かに無理矢理決着付けるために言い争ってんのか
くだらねプッ

257:208
12/01/09 18:32:50.30 s1gtT2R7

もう不毛な争いはやめろよ
function keisan(a){ return prompt('問題 '+a+' の答えは?')}
keisan('((1+2+3)*2+19*(30*2))/2');

258:Name_Not_Found
12/01/09 18:34:20.26
結論:誰も書けない

259:Name_Not_Found
12/01/09 18:35:03.49
Javaスクリブトを最近習い始めたんだが、ちょっと疑問。
これっていわゆるブラウザ上で色んなことをするやつだけど、
あるボタンを押す→ボタンの下あたりに適当なデータぶちこんだテーブルを表示する
とかっていうのも出来るの?できたとしてもやっぱりテーブルのデータはあらかじめどっかに書いて
おかなきゃ駄目だよな。DBとかから引きずってきて表示、なんてハイレベルなこと
できそうなかんじじゃないし。

一応調べたらなんか<div>タグにid=名前ってつけてやって何かするって奴が
近いようだが…。


260:Name_Not_Found
12/01/09 18:35:10.27
結論:もう面倒だからeval使え。それで被害者でても俺は知らん。

261:Name_Not_Found
12/01/09 18:35:47.38
エバラエバラっておまえらそんなに焼肉食べたいのかよ!!!

262:Name_Not_Found
12/01/09 18:36:01.60
>>254 とか >>256 みたいなのが荒れるきっかけになりやすいんだけどな。
「はい、分かりました」なんてなる訳ないんだから。

263:Name_Not_Found
12/01/09 18:36:22.45
>>259
固有名詞を間違えるな
×Javaスクリブト
○Javascript

264:Name_Not_Found
12/01/09 18:36:38.37
っていうか計算式にeval使うような奴は他の時も解決方法がわからず一人eval使うだろ

265:Name_Not_Found
12/01/09 18:36:49.01
evalは不要
悪魔
不要

悪魔

不要

悪魔

不要悪魔不要

266:Name_Not_Found
12/01/09 18:37:23.16

  ┏┳┳┓     ハイ.     ┏┳┳┓
┏┫┃┃┃     雑談は   ┃┃┃┣┓
┃┃┃┃┣┓   ここまで ┏┫┃┃┃┃
┃      ┃┃┏━━┓┃┃      ┃
┃ 雑談   ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━┛┗┳━┳┛┗━━┛
            ┏┻┓┃
        ┏━┛  ┣┻┓
        ┗━━┫  ┗━┓
.             ┗━━┛

267:Name_Not_Found
12/01/09 18:37:29.91
>>259
サーバ上のDB叩きたいなら、サーバ上にそういうスクリプト置くなりして、
ajaxとかで問い合わせて表示するようにすればいい。
ブラウザ上のJavaScriptだけで、サーバ上のDB叩くとかは無理

268:Name_Not_Found
12/01/09 18:38:03.54
devil

evil

eval

あー、なるほどそういうことかー

269:Name_Not_Found
12/01/09 18:38:23.43
なんだこいつら(笑)
evalに親でもころされたのかw

270:Name_Not_Found
12/01/09 18:39:09.69
>>264
計算式を解決する
代替コードのを示してくれ
代替コードを紹介してるサイトを教えてくれるのでもいい


271:Name_Not_Found
12/01/09 18:39:18.22
>>264
固定的にEVAL=絶禁としたらあかんよ。

272:Name_Not_Found
12/01/09 18:39:36.99
このまま1000までいくよ~

273:Name_Not_Found
12/01/09 18:40:05.10
ここからラーメンスレ

274:Name_Not_Found
12/01/09 18:40:08.57
つかユーザーが計算式入力するとかどんな状況だよ

275:Name_Not_Found
12/01/09 18:40:26.18


    白組がんばれー

         赤組がんばれー

 

276:Name_Not_Found
12/01/09 18:40:47.71
グーグルの検索窓に計算式ぶちこめばおk

277:Name_Not_Found
12/01/09 18:40:51.69
どこかのブログのネタに洗脳されてevalは使いたがらない自称上中級がいるのか

278:Name_Not_Found
12/01/09 18:41:33.35
ひとまず>>181で具体的にevalの危険性を語ってくれてるから初心者は読みなさいね

279:Name_Not_Found
12/01/09 18:41:37.63
>>270
つJSLinux

280:271
12/01/09 18:41:40.97
>>270
それはあるよ。構文木とかで調べればいい。
ただ、インタプリタが実装していることをその上でもまた実装するのか、って問題がある。
一番計算の仕様に忠実なのはインタプリタだしね。だから、さっきも言ったけど正規表現とかで
妥当性だけ確かめて、あとはインタプリタに投げる方法もある。

281:Name_Not_Found
12/01/09 18:42:19.66
>>268
いいこと教えてやる
>devil→悪魔
>evil→邪悪

282:Name_Not_Found
12/01/09 18:42:59.54
どういうことだってばよ

283:病気的な意味で
12/01/09 18:44:08.50

          l      /    ヽ    /   ヽ \
          /     / l    ヽ /      |  \
| し な 間 〉 //  l_ , ‐、   ∨ i l  | |    \      は
| ら っ に |/ l ,-、,/レ‐r、ヽ  |   /`K ,-、 <   し
| ん て あ   / | l``i { ヽヽ l | / , '/',` //`|_/       や
| ぞ も わ    |> ヽl´、i '_   。`、llィ'。´ _/ /,) /\    ろ
| |   な   |`/\ヽ'_i ,.,.,.⌒´)_ `_⌒  /__/l  \       く
っ   |    く    |/ / l´,.-― 、l`ー一'_冫 /l l |   /   っ
!!!! |        \ ', /  /`7-、二´、,.| /// |   /
           lT´ {  /  /  ト、 |::| /// /  /    !!!!!
          l´ ヽ、 > ー    ,/ |ニ.ノ-' / / _
              i``` 、/ }    ',,,..'  |-'´,- '´     ̄/ ヽ∧  ____
           \/ ' \_  `´ノ7l´      /    // ヽ l ヽ
         / ̄ |      ̄ ̄/ ノ L___/      ★  U  |
        /   ヽ      /`ー´     /l                 |

284:Name_Not_Found
12/01/09 18:44:13.06
>>278
読んじゃった・・・
あまりの恐ろしさにもう1人で夜中にトイレにいけなくなっちゃったよ・・・

285:Name_Not_Found
12/01/09 18:45:28.57
つまりdevil(悪魔)をevalするとevil(邪悪)になるのか

286:Name_Not_Found
12/01/09 18:48:39.36
なに、どんどんトンチ大会になってるの?

287:Name_Not_Found
12/01/09 18:50:18.17
冬厨が沸くといつもこうだ

288:Name_Not_Found
12/01/09 18:51:22.97
昨日は割と良かったんだが

289:Name_Not_Found
12/01/09 18:51:55.61
冬厨じゃなくてeval厨だな

290:Name_Not_Found
12/01/09 18:52:37.10
evalをNGワードにぶっこんだ

291:Name_Not_Found
12/01/09 18:56:03.02
進行早いなあ。

292:208
12/01/09 19:00:40.05 s1gtT2R7
ぶっちゃけた話すると、FirefoxやChromeで使われているFirebug系のデバッガはeval()で評価してるんだけどね



293:Name_Not_Found
12/01/09 19:03:07.09
>>292
んなわけねーだろw


294:208
12/01/09 19:04:25.89 s1gtT2R7
>>293
window.eval=null;で、ほぼ無効化できるからやってみ

295:Name_Not_Found
12/01/09 19:16:11.53
>>294
chromeもfirebugもさほど変わらんな
そもそもeval自体がConfigurableとWritableがfalseになってそうな気がするが

それにwindow.evalにnull代入したって
次回の実行コンテキストはまた違うってのが多いだろ


296:Name_Not_Found
12/01/09 19:23:41.52
つうかユーザーが入力したコードが実行されるからって何が問題なわけ?

297:Name_Not_Found
12/01/09 19:27:55.71
298(肉屋)が一言↓

298:Name_Not_Found
12/01/09 19:28:29.25
僕なんだけどさ よくRuby,PHP,Python勉強会でいじめられるんだよ
なんていうか、僕ほら 2chばっかりやってるし Ruby、PHP、Pythonできないから
javascriptでもなめられちゃうし 今日もさんざん勉強会でヒソヒソいわれちゃったよ
Ruby厨「なんだよあいつ Perlしかできないじゃん どうする?あいつ」
PHP君「いまごろPerlって(ヒソヒソ) 仲間外れにしようぜ~! 
Pythonちゃん「いいわよ Perl使いだわ時代遅れだわ いまさらPerlなの・・・」
カエレ!カエレ!カエレ! っと僕に罵声をあびせてきました
会場にいたMatzzさんに相談したんですが・・・
Matzz「あなたPerl使いですかRuby使いの相談しかうけれませんよ(笑)」
メガネが怪しげに光っていました いじめられました
僕は、あまりのショックさに会場のトイレにかけこんで2chを開きました
僕「はぁはぁ・・・苦しい 助けてだれか・・・ |Perl___| (スレッドタイトル)[検索] ポチッ!」
[ perl ]を検索しました(あと0モリタポ) 82スレ中 1~50スレ目 0.13秒

Emacs,Ruby,PHP,Pythonを使ってるやつらがきもい - UNIX板@2ch(3)
僕「なんだこれは・・・僕と同じ考えをしてる人がいる・・・」

僕はきめました Perl忍者さんというスレッドを立てた人に助けてもらおうとトイレをでました
???「困っているのかい?君は」
僕「誰ですか?」
???「○○忍者です よろしく 話しましょう! 何でもはなせます
プログラミングとかも 」
僕「はい!!一緒にあいつらを倒しましょう!!」
???「あの・・・ だれかいますか?」
僕「はい?どうしたんですか?」
???「なんさい?僕は19歳です 」
僕「12歳です」
???「もういいです」
Ruby,PHP,Pyhon「便所にゴキブリPerl使いがいるぞーー!!!」


299:Name_Not_Found
12/01/09 19:29:43.02
以上肉屋からのコメントでした!

300:208
12/01/09 19:36:43.25 s1gtT2R7
>>296
何の問題もない
JSON.parse()がなかった頃はeval()を使っていたし、別にeval()だけが危険なわけじゃない

301:Name_Not_Found
12/01/09 19:51:57.23
>>300
そんな事言ってると
var hoge = {test:1},
key = 'test';

alert(eval('hoge.'+key));

こんな感じの糞コードが増えそうだから
eval使って何の問題ないとか言うのは辞めて頂けないか
こんな糞コードのメンテとか考えた事あんの?って感じだわ
JSON.jsなんかでもeval使ってたけど
それらはちゃんとチェックしてからだった筈だが

302:Name_Not_Found
12/01/09 19:52:12.43
正規表現で書いたよー。

function calc(expr) {
return expr.replace(/\(([^()]+)\)|\((.+)\)/g,function(x,a,b) { return calc(a||b); })
.replace(/((?:\d+[*/])+)(\d+)/g,function(x,a,b) { b*=1; return (a.slice(-1)==="*")? calc(a.slice(0,-1))*b : calc(a.slice(0,-1))/b; })
.replace(/((?:\d+[+-])+)(\d+)/g,function(x,a,b) { b*=1; return (a.slice(-1)==="+")? calc(a.slice(0,-1))+b : calc(a.slice(0,-1))-b; })*1;
}

alert(calc("1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31"));

303:Name_Not_Found
12/01/09 19:59:04.77
>>302
console.log(calc("5*5*(-5)"))

304:Name_Not_Found
12/01/09 19:59:36.20
すまそ。先頭の5*は不要だったな

305:Name_Not_Found
12/01/09 20:00:47.97
やっと来たか

306:Name_Not_Found
12/01/09 20:01:02.29
あとこれも
calc("1/2+2"); // 0.7 (正しくは2.5)

307:Name_Not_Found
12/01/09 20:02:15.59
注文の多い料理店

308:Name_Not_Found
12/01/09 20:02:30.32
Numberはいらない子

309:302
12/01/09 20:03:42.63
もう無理 (´・ω・`)

310:Name_Not_Found
12/01/09 20:04:34.87
>>309
そうだろw普通こういうのは正規表現オンリーでやらないからな。絶対対応しきれない。

311:302
12/01/09 20:09:00.25
指摘された 2つはいった。

function calc(expr) {
return expr.replace(/\(([^()]+)\)|\((.+)\)/g,function(x,a,b) { return calc(a||b); })
.replace(/((?:-?\d+(?:\.\d*)?[*/])+)(-?\d+(?:\.\d*)?)/g,function(x,a,b) { b*=1; return (a.slice(-1)==="*")? calc(a.slice(0,-1))*b : calc(a.slice(0,-1))/b; })
.replace(/((?:-?\d+(?:\.\d*)?[+-])+)(-?\d+(?:\.\d*)?)/g,function(x,a,b) { b*=1; return (a.slice(-1)==="+")? calc(a.slice(0,-1))+b : calc(a.slice(0,-1))-b; })*1;
}

312:Name_Not_Found
12/01/09 20:09:50.57
渡された文字列が計算式かどうかを判定してevalだろ
計算式以外の文字列ならエラー返せばよいわけだし
()+-*/^%1234567890.以外の文字があれば弾けばだいたい安全だろ

313:Name_Not_Found
12/01/09 20:11:56.64
>>312
それでおk

314:Name_Not_Found
12/01/09 20:15:56.26
おkじゃねーよw
計算式かどうかチェックしたあとにエネルギー線によって
ビットアップセットが起きる場合も考えないといけない
その場合eval使ってた方が確率的に危険だろが

315:Name_Not_Found
12/01/09 20:16:55.92
nth-childのnthは何かの略ですか?

316:Name_Not_Found
12/01/09 20:17:13.52
>>314
参考文献plz

317:Name_Not_Found
12/01/09 20:18:19.23
>>316
シングルイベント・アップセットとは

 主に外部放射線に起因するソフトエラーは、またの名をシングルイベント・アップセットともいう。


318:Name_Not_Found
12/01/09 20:18:34.96
>>311
(1/(2)+3)-(4)

319:Name_Not_Found
12/01/09 20:19:58.52 ygGAYZhC
sage>>315
n'thの略
これでわから無ければ諦めなさい

320:Name_Not_Found
12/01/09 20:20:27.44
(+5)*(-4)--5+-6

321:Name_Not_Found
12/01/09 20:21:18.51
それが電卓で入力されることはない

322:Name_Not_Found
12/01/09 20:21:36.90
>>320
さすがにそれはカッコが必要だと思う

323:Name_Not_Found
12/01/09 20:27:44.65
>320
とりあえず今月中にいいの作ってくるから待ってて

324:Name_Not_Found
12/01/09 20:36:53.77
乗せられて冬休みの宿題を作ってやるスレ民であった。

325:Name_Not_Found
12/01/09 20:39:18.18
おまえら>>110から200レスもevalで喧嘩してるのか…

326:Name_Not_Found
12/01/09 20:40:56.80

      ヽ|/
     / ̄ ̄ ̄`ヽ、
    /         ヽ
   /  \,, ,,/    |
   | (●) (●)|||  |
   |  / ̄⌒ ̄ヽ U.|   1/5スレ・・・・・・・・ゴクリ。
   |  | .l~ ̄~ヽ |   |
   |U ヽ  ̄~ ̄ ノ   |
   |    ̄ ̄ ̄    |

327:Name_Not_Found
12/01/09 20:41:26.58
・evalは絶対に使うべきではない
・基本的には避けるべきだが、局所的にevalの使用機会がある
・evalは積極手に使うべき

328:Name_Not_Found
12/01/09 21:30:39.83
盛り上がってるね。数式のパース書いてみたけど。個人的にはちゃんと
チェックできる奴が分かっていて使うeval()は必要悪、みたいに思う。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML//EN">
<html><head><title>???</title>
<script type="text/javascript">
var s = '1+2';
function exp() {
var v = term();
while(s.match(/^[+-]/)) {
if(s.match(/^[+]/)) { s = s.substring(1); w = exp(); v += w; }
else { s = s.substring(1); w = exp(); v -= w; } }
if(s.match(/./) && !s.match(/^[)]/)) throw 'syntax'; else return v;
}
function term() {
var v = fact();
while(s.match(/^[*/]/)) {
if(s.match(/^[*]/)) { s = s.substring(1); w = term(); v *= w; }
else { s = s.substring(1); w = term(); v /= w; } }
if(s.match(/./) && !s.match(/^[-+)]/)) throw 'syntax'; else return v;
}
つづく(2レスなのでご容赦を)

329:Name_Not_Found
12/01/09 21:31:17.72
function fact() {
if(s.match(/^[0-9]/)) {
var t=s.match(/^[0-9]+/)[0]; s=s.substring(t.length); return parseInt(t); }
if(s.match(/^[(]/)) {
s = s.substring(1); var v = exp();
if(s.match(/^[)]/)) { s = s.substring(1); return v; } else throw 'syntax'; }
}
function calc() {
try {
s = document.getElementById('t0').value; alert(exp());
} catch(e) { alert('syntax error, seeing:' + s); }
}
</script>
</head><body>
<div><input type="text" id="t0" value="((1+2+3)*2+19*(30*2))/2">
<button onclick="calc()">calc</button></div></body></html>

330:Name_Not_Found
12/01/09 21:35:06.89
面倒くさいからconsoleで実行できるスクリプトだけのにしてくれ

331:Name_Not_Found
12/01/09 21:40:42.11
>>330
すみません。その場合、sに数式文字列を格納し、exp()を実行します。それだけ。

332:Name_Not_Found
12/01/09 21:42:12.82
>>328
車輪の再発明乙
URLリンク(d.hatena.ne.jp)

333:Name_Not_Found
12/01/09 21:43:18.29
電卓関係ないな

334:Name_Not_Found
12/01/09 21:43:51.69
>>332
はい、そりゃ誰でも書けるとは思います。練習としてやってみました。

335:Name_Not_Found
12/01/09 21:55:46.22
evalはテンプレートエンジンとかで使うな

ここみたいな低レベルなスレでは一律使うなでいいんじゃねーの
>>110も危なっかしいから使うなって言われたんだろ

336:Name_Not_Found
12/01/09 21:59:29.11
>>333
最終的にJSパーサーを作るまでやるから

337:Name_Not_Found
12/01/09 22:07:57.21
>>332
カッコ使えないじゃん

338:Name_Not_Found
12/01/09 22:16:15.81
カッコつけんなよ

339:Name_Not_Found
12/01/09 22:39:03.30
それこそ328に作ってもらえばいいんじゃねの

340:Name_Not_Found
12/01/09 22:51:48.03
amachang先生やdankogai先生レベルじゃないと作れないよ
おまいらには無理

341:Name_Not_Found
12/01/09 23:00:47.06
eval否定ってJSONどーすんだ。

342:Name_Not_Found
12/01/09 23:05:48.64 veZ1XhXh
下記で、jsonが読めないのですが、
どうすれば、json読めるようになりますでしょうか。
--
<!DOCTYPE >
<html>
<head>
<meta charset="UTF-8">

<script type="text/javascript">
var jsonObject = {
"1":"a",
"2":"b"
}
function push() {
alert('jsonObject.1');
}
</script>
</head>

<body>

<input type="button" onclick="push();" value="push">

</body>

</html>

343:Name_Not_Found
12/01/09 23:06:38.95
>>339
もちろん >>328-329 はかっこに対応してるけど。そういうお題だったから。
>>341
別に、ヘンなものがないか検査してからeval()するか、全部自前でパースするか、どっちでも
いいと思うけど。何も考えずにeval()する奴が叩かれるというだけでしょ。

344:Name_Not_Found
12/01/09 23:11:22.91
>>342
jsonObject[1] とかじゃないの。テンプレ >>2 のQ4/A4も読むといいよ。

345:Name_Not_Found
12/01/09 23:56:15.90
JavaScriptでevalを使うなって話は
Cでgotoを使うなって話に似てる。
判って使う分には問題ない。
むしろ、他人の「使うな」って評価を無批判に受け入れちゃう方が問題。
自分で熟慮して、「使うな」って自分を律する事には口を挟まない。

346:Name_Not_Found
12/01/10 00:21:39.85
いやJSONにeval必要ないだろ

347:Name_Not_Found
12/01/10 00:38:58.18 CIijrwn/
(おいおいコイツらいつまでやってんだよさっさと出てけよ・・・)

348:Name_Not_Found
12/01/10 01:11:44.66
evalはフェイルセーフじゃないから好きじゃない

349:Name_Not_Found
12/01/10 01:18:02.02
>>342
どこにもJSONが見つからないよ

350:Name_Not_Found
12/01/10 02:09:38.47
勉強してていくつか質問
1.ダブルクオーテーションの中ではシングルクォートを使うってのが分かったんだけど
更にシングルクォートの中で文字を囲いたいときにはどうするの?
シングルクォート以降はエスケープってやつをしなきゃいけないの?

入門書を見ながら勉強してて少しは慣れてきたんだけど
Jsの書き方のルールに苦戦しててよく間違えてエラーで怒られる。
2.イコールの後の文字は必ずダブルクオーテーションで囲わないとダメって認識であってる?
3.下の構文なんだけど同じ「visibility」メソッド?でも後に続くプロパティの間の記号が
「=」と「:」があるんだけど、どう使い分けたらいいの?
スタイルシートだからコロンになってるの?
だとするとそれ以外は全部「=」を使えばOKなの?
<input type = "button" value = "文章を消す"
onclick = "document.all('text').style.visiblity = 'visible'">

<div id = "text2" style = "position:absolute; left30; top:120; color:red;" visibility:hidden;">


351:Name_Not_Found
12/01/10 02:24:00.92 CIijrwn/
jsを弄る前にhtmlとcssを勉強したほうが幸せになれるぞ

352:Name_Not_Found
12/01/10 02:27:37.52
>>351
やってみる。
しかしどの程度までできるようになったらいいんだ?

353:Name_Not_Found
12/01/10 02:35:34.61
とりあえずhtmlとcssとjsの区別がつくまで

354:Name_Not_Found
12/01/10 03:19:48.58
>>352
HTML5とかDHTMLの質問スレッドがあればそこに行った方がいい

355:Name_Not_Found
12/01/10 03:21:23.06
もはやここは隔離スレだな

356:Name_Not_Found
12/01/10 03:26:51.44
質問者が初心者なのはいいんだが、回答する方に初心者がいると不毛な議論に発展するんだよな

357:Name_Not_Found
12/01/10 03:40:39.03
初心者スレだからそれでいい

358:Name_Not_Found
12/01/10 04:05:12.81
HTML5が流行ってWebProgから人が流れ込んできたせいだな
2012年はHTML5の時代やで

359:Name_Not_Found
12/01/10 04:08:54.27
本スレがないのがよくない

360:Name_Not_Found
12/01/10 04:27:49.79
ECMAScriptスレがあるじゃん

361:Name_Not_Found
12/01/10 04:42:48.16 V9aGb3Q1
>>342
var jsonObject = {
"1":"a",
"2":"b"
}


1がクォートされて"1"になってるんで
jsonObject["1"]

あと、これはjsonではなく、ただのJavaScriptのオブジェクトな

362:Name_Not_Found
12/01/10 04:43:57.88 V9aGb3Q1
蛇足かもだけど
var jsonObject = {
"1":"a",
"2":"b"
};

↑最後にセミコロンを

363:Name_Not_Found
12/01/10 05:03:22.56
>>360
ここは(D)HTMLで使うJSだからECMAはちょっと違う

364:302
12/01/10 05:11:30.35
>>361
指摘するのは、そこじゃないて。

> alert('jsonObject.1');

まず、クォートが不要。
そしてドットシンタクスの場合、識別子である必要があるから、
数字で始まる値は指定できないんで、書くなら jsonObject[1]。
(jsonObject["1"] でも良いけど)


365:Name_Not_Found
12/01/10 05:12:17.95
あれ、名前が…。

366:Name_Not_Found
12/01/10 07:32:24.07
jQueryでドロップダウンメニューをslideToggleで作ったのはいいんですが、
連続でマウスオーバーしたらその回数だけ開閉するのはどうにかならないんでしょうか?

調べてもそれらしい情報がでてこないもので・・・

367:Name_Not_Found
12/01/10 08:03:33.29
数値の入った文字列をevalで数値化してるのですが
あたまに"0"が入ってると8進数になってしまいます
単純に頭に0があれば削ればいいだけなんですが
もっとスマートな方法は無いのでしょうか?

368:Name_Not_Found
12/01/10 08:08:29.87
>>367
eval()を使うのが間違い。parseInt(文字列, 10)を使う。
>>366
onmouseoverではフラグ立てるだけにして、setInterval()から呼ぶコードで
フラグ立ってたらメニュー開くようにすればいいんじゃないかな。

369:Name_Not_Found
12/01/10 08:16:43.53
eval不要説唱えてる奴は宗教でしょ。
言われてた当初はそれなりに意味があったのかもしれないけど
多くは思考停止して闇雲に追従しているだけみたいな。
スレの性質に関係なく「sageろカス」とかいうのもその類。

「スクリプトのコードはコメントタグで囲わなきゃいけないんだよ^^」なんて
自称JSそれなりに知ってる人さんから昔優しく“指導”されたことがある。
そのくせ「Netscapeなんてもう誰も使ってないし切り捨てていいよ」みたいな。はぁ。

自称JSそれなりに知ってる人さんにとっては、Netscapeなんかよりも
JavaScript非対応でコードが文字列としてずらずらと表示されちゃうブラウザ
(NCSA Mosaicとかですかね?)の占めるシェアの方が無視出来ないらしいです。
そういうくだらないしがらみはもう捨てていきましょうよ。


370:Name_Not_Found
12/01/10 08:28:47.94
eval()必要説も同じくらい宗教なんだよね。宗教論争、無意味でスレの浪費だからやめてほしい。
せっかく終わったのに上から目線でまた火をつけるとかもやめてほしい。

371:Name_Not_Found
12/01/10 08:30:39.76 6w+N2uy0
>>366
少し待ち時間入れればいいよ
マウスオーバですぐ発火させないで、setTimeoutで20msecくらい
待ってから表示させるだけでだいぶ違う
触った時のレスポンスと待ち時間はバーターだから丁度よいタイミングに
なるように待ち時間をすりあわせするといいよ


ここまで書いて>>368に気付いた…
せっかくだから投下しときますすんません

372:Name_Not_Found
12/01/10 08:31:22.80
まあevalはCのgotoと同様に、宗教上?の理由で嫌われているのと同様だろうな。
要するにユーザーの入力を単なる文字列では無く、
JavaScript的(あるいはDOM的)に意味のあるものとして利用するのは危険なので、
evalでもinnerHTMLでも、本当にその文字列を使って大丈夫かどうかを必ず意識する必要があるという事。
初心者云々は単に慢心を生むだけなので、初心者経験者は全く関係無い。
evalが嫌われるのは、代替手法が無いような本当に必要となる場面が少ない(JSON文字列をJSONオブジェクト化するなどくらい)ので、
わざわざリスクのある手法を回避したいという人間が多いからでは。

373:Name_Not_Found
12/01/10 08:34:18.50
>>370
うだうだ言ってないで早くコードかけよ

374:Name_Not_Found
12/01/10 08:50:59.46
>>373 ん?数式の解析とかは >>328-329 にあるからね。
>>372 とっても賛成。テンプレに入れるかはともかく、Q&Aにしてみた。

Q. eval()は使ってはいけないと言われたのですがなぜでしょう。
A. ユーザ入力をそのままeval()に与えるということは、ユーザにあなた
のプログラムを全く任意に改変させるのと同等なリスクがあります。
また、プログラム保守上も、そこで「何が」起きるかコードを見たとき
に分かり難くなるというリスクがあります。なのでeval()を使う際は
(a)与える文字列は予め検査して想定されている事だけが起きることを確認。
(b)そこで何が起きることを想定しているかをコメント等で記述。
の2つを守るのがよいスタイルですが、これは一定の手間が掛かります。
過去スレにあるほとんどの(99%以上の)事例は「数値への変換」「変数
の設定」など自然かつ安全な代替手段があるものなので、そのような
ものを知らないレベルの人が安易に使うことを警告して「eval()禁止」
と言われることが多いようです。eval()を使わなければできないことは
確かに存在しますが、そのようなことで普通のWeb制作者がやりたいこ
とは大抵、上記の要件をカバーしたライブラリなどの形でパッケージさ
れたものがあるので、自分で直接eval()を書こうとする前に十分見直さ
れることを薦めます。

375:Name_Not_Found
12/01/10 09:05:13.71

     /: : : : : __: :/: : ::/: : ://: : :/l::|: : :i: :l: : :ヽ: : :丶: : 丶ヾ    ___
     /;,, : : : //::/: : 7l,;:≠-::/: : / .l::|: : :l: :|;,,;!: : :!l: : :i: : : :|: : ::、  /     ヽ
    /ヽヽ: ://: :!:,X~::|: /;,,;,/: :/  リ!: ::/ノ  l`ヽl !: : |: : : :l: :l: リ / そ そ お \
   /: : ヽヾ/: : l/::l |/|||llllヾ,、  / |: :/ , -==、 l\:::|: : : :|i: | /   う う  前  |
.   /: : : //ヾ ; :|!: イ、||ll|||||::||    ノノ  イ|||||||ヾ、 |: ::|!: : イ: ::|/   な 思 が
   /: : ://: : :ヽソ::ヽl |{ i||ll"ン    ´   i| l|||l"l `|: /|: : /'!/l     ん う
 ∠: : : ~: : : : : : : :丶ゝ-―-      ,  ー=z_ソ   |/ ハメ;, :: ::|.   だ ん
   i|::ハ: : : : : : : : : : : 、ヘヘヘヘ     、  ヘヘヘヘヘ /: : : : : \,|.   ろ な
   |!l |: : : : : : : : :、: ::\    、-―-,      / : : :丶;,,;,:ミヽ   う  ら
     丶: :ハ、lヽ: :ヽ: : ::\__  `~ "      /: : ト; lヽ)   ゝ
       レ `| `、l`、>=ニ´        ,  _´ : :} `   /
         ,,、r"^~´"''''"t-`r、 _  -、 ´ヽノ \ノ   /    お ・
       ,;'~  _r-- 、__     ~f、_>'、_         |  で  前 ・
      f~  ,;"     ~"t___    ミ、 ^'t         |  は  ん ・
      ,"  ,~         ヾ~'-、__ ミ_ξ丶     |  な  中 ・
     ;'  ,イ ..          ヽ_   ヾ、0ヽ丶    l         /
     ( ;":: |: :: ..          .`,   ヾ 丶 !    \____/
     ;;;; :: 入:: :: ::      l`ー-、   )l   ヾ 丶
     "~、ソ:: :い:: :     \_  ノ ,    ヾ 丶

376:Name_Not_Found
12/01/10 09:10:19.76
やっぱり宗教だなあ
evalに限った危険なんて1つもないのにw

377:Name_Not_Found
12/01/10 09:14:08.46
ユーザーが入力したコードが実行されて何が問題なのかわからない
あるとしても重箱の隅を突くような特殊なケースじゃないか?
そんなんだったらevalに限った話じゃない

378:Name_Not_Found
12/01/10 09:21:08.86
>>366

var obj = $(selectors).not(':animated');

animate()実行中要素を選択しない


var obj = $(selectors).stop();

実行中animate()を停止

379:Name_Not_Found
12/01/10 09:23:10.06
別にユーザが任意の改変をしてもかまわないという人は別にそれでいいんじゃないの。
ふつう、ユーザ入力に対してチェックとかするよね。それはサーバ側に送られる
ユーザ入力をある程度制御しないとまずいと思うからやるんだと思うけど。
JS上でのチェックとサーバのチェックと2重にするところを、サーバだけの
チェックになっても構わないとか、よそのAPIをJSから直接叩いてるところで
何を叩かれても構わないとか、そういう意味になるわけどいいんだろうか。
漏れはそれは嫌だからユーザに任意の改変は許したくないと思うわけで。

380:Name_Not_Found
12/01/10 09:24:37.34
ユーザー入力じゃなくて開発者の意図しない入力って言えよ

381:Name_Not_Found
12/01/10 09:28:48.90
>>380 なるほど御意。

382:Name_Not_Found
12/01/10 09:32:18.61
>ユーザ入力をある程度制御しないとまずい
これは間違いだろ
JS側での入力チェックはユーザビリティの観点以外の何物でも無いと思うのだが

383:Name_Not_Found
12/01/10 09:36:33.16
全くもって意味わからんな
ユーザーが改変したいと思ったときは
わざわざソース調べてここにeval使われてるから狙おうとかしないだろ
普通にアドレスバーに打つだけ
それにそもそもformチェックでevalの出番はないでしょ


384:Name_Not_Found
12/01/10 09:46:40.95
屁理屈こねないで使うなって注意されたら使うなよ。
躾がなってないなこいつら。

385:Name_Not_Found
12/01/10 09:53:53.77
>>382
フォームとかからサーバに投げる前段階としてのチェックならそうだけどね

入力から、それによって引き起こされる何らかのアクションまで
ブラウザ側で完結してる部分なら、当然ブラウザ側でちゃんとチェックしないといけない

問題とされている領域を間違えてるっていうかなんと言うか…
jsでアプリケーション作ったこと無いから、もしかしてこういう発想しか出来ないのかな

386:Name_Not_Found
12/01/10 09:58:37.11
入力をチェックすることとeval禁止が直接結び付かないんすけど…
こいつさっきから何言ってんだ?
例えば
NAME=prompt("主人公の名前を決めてください","")
~NAMEのチェック~

とやるのはわかるが
こいつが言いたいのは

NAME=eval(prompt("主人公の名前を決めてください",""))
~NAMEのチェック~

ってことか??

387:Name_Not_Found
12/01/10 10:01:30.35
>>385
うだうだ言ってないで具体的で示せよ。
特殊じゃない凡例をな。

388:Name_Not_Found
12/01/10 10:05:42.28
evalは悪魔
悪魔は不要
不要不要
不要
悪魔
悪魔
不要
悪魔
不要
悪魔

要悪




魔不要悪魔不要悪魔

389:Name_Not_Found
12/01/10 10:10:40.28
>>385
クライアント側のみで完結する方が珍しいだろ。
通信が発生する時点で完結はしないからな?
それに
>サーバ側に送られる
これがついてる時点で"ブラウザ側で完結してる部分"なんて意図するわけ無いだろ
ブラウザ側で完結する部分ならチェックするのは当たり前


390:Name_Not_Found
12/01/10 10:27:35.56
文字の色を上下でわける方法はありますか?
URLリンク(jsfiddle.net)
このような感じに書いてできると思ったのですができませんでした。
アドバイスおねがいします。

391:390
12/01/10 10:56:43.40
あばばば、cssスレで訊くべきでしたね
そしてclip:rectで解決できました
おさわがせ

392:Name_Not_Found
12/01/10 11:01:21.83
そういう特殊なことはブラウザ間で差が出るからやめとけ
素直にシンプルにCSS3使っとけ

393:Name_Not_Found
12/01/10 11:04:26.30
>>107お願いします

394:Name_Not_Found
12/01/10 11:06:52.92
>>393
えー、別にその要素のXY座標を求めて差し引くだけじゃないの。
offsetTop、offsetLeftで調べてみては。

395:Name_Not_Found
12/01/10 11:08:38.25
>>394
今から調べてやってみます
どうもありがとうございます

396:Name_Not_Found
12/01/10 11:15:05.40
>>395
マウスイベントのoffsetX,offsetY

397:Name_Not_Found
12/01/10 11:17:39.76
Borderがあるとブラウザによってややこしくなるから注意

398:Name_Not_Found
12/01/10 11:56:38.44
>>393
var xo = $('selector').offset().left;
var yo = $('selector').offset().top;
var x = Math.floor( event.clientX - xo - 180);
var y = Math.floor(-event.clientY + yo + 180);

こんなかんじでやれる。

399:Name_Not_Found
12/01/10 11:58:19.32
±180消し忘れた

400:Name_Not_Found
12/01/10 12:59:10.18
jqueryは甘え

401:Name_Not_Found
12/01/10 13:09:39.28
コードがスッキリするから出来ればjQueyrセレクター使って欲しい

402:Name_Not_Found
12/01/10 13:29:27.91
CSSセレクタと言え

403:Name_Not_Found
12/01/10 13:33:17.95
jquery独自のセレクタがあるんだけどね

404:Name_Not_Found
12/01/10 13:42:05.03
独自セレクタがあっても基本的な事はCSSセレクタで事足りるだろうが


405:Name_Not_Found
12/01/10 13:46:45.82
xPath使え。捗るぞ。

406:Name_Not_Found
12/01/10 14:08:45.99
>>404
「jqueryセレクタ」って言葉をわざわざ指摘して「CSSセレクタ」に強要する理由にはならんな。

407:Name_Not_Found
12/01/10 14:12:44.37 6w+N2uy0
>>374
evalの本当の危険性はそんな話じゃない!

糞コンサルがコードをevalで検索しただけで
「お宅のサイトのJSはevalを使っていて危険です」とクライアントにチクる
頼んでもいないのに、わざわざご丁寧なパワポで

勤勉で真面目なクラ担当者は、evalが何かは知らないが「JS eval 危険」でググる

俺(弊社、下請け)に電話かけてくる


コレ!

408:Name_Not_Found
12/01/10 14:13:22.52
>>406
CSSセレクタで事足りる事を
態々jQueryのセレクタを使えば良いという方がおかしいだろ
CSSセレクタの事を
jQueryセレクタと勘違いする子が発生しちゃうかもしれないだろうが
ベンダに偏らない標準的な用語選ぶ様にしろよ



409:Name_Not_Found
12/01/10 14:15:22.09
>>408
落ち着けよ。そんなにカリカリすることかよ

410:Name_Not_Found
12/01/10 14:15:48.84
素人丸出しな感想で悪いが
$('#hoge a')とかって確かにCSSと同じ指定の仕方だなーと思ってたが
ああいう指定方法をCSSセレクタって言うんだ

411:Name_Not_Found
12/01/10 14:38:19.99
querySelectorがあるじゃん

412:Name_Not_Found
12/01/10 15:10:19.47
対応環境が限られるquerySelecter使ったり
プラグインに頼ったりするのは同じくらい両方よくない


413:Name_Not_Found
12/01/10 15:19:20.65
XPathおっそいなw
よほど特殊な指定の仕方でもしない限り使えなくね?

414:366
12/01/10 15:25:56.98
366です。
色々な案ありがとうございます。

とりあえずある程度の意見を参考に試行錯誤してみたんですが、
実際まだjQueryを触って日も浅いのであまり難しいものが組めず、結局以下で落ち着く形になりました。
案をくださった>>368さん、>>371さん、>>378さんどうもありがとうございました。

それぞれの意見はメモに取ってあるのでわかる日が来たらそれも試してみようかと思います。

$(function(){
$('#nav li').hide();
$('#nav').hover(function(){
$('li:not(:animated)').slideDown('fast');
},
function(){
$('li').slideUp('fast');
});
});

415:Name_Not_Found
12/01/10 15:32:10.82
できるまでやらんと力つかんぞ
何ヶ月かかってもいいからできるまでやって報告しろ
妥協しましたの報告はいらん

416:Name_Not_Found
12/01/10 15:32:42.28
>>413
querySelectorの方が基本的に遅いぞ
jQueryで使われてるsizzleは知らんがな

417:Name_Not_Found
12/01/10 15:34:38.89
なーに言ってんだこいつ
盲目の信者はこええな


418:Name_Not_Found
12/01/10 15:38:17.97
jQuryで使うセレクタはjQueryセレクタだと思ったけど違うんだな
jQueryセレクタではCSSセレクタが使えるようになってるというのが正しいのか

>>414でできてるでしょ。jQuery使うならこれが正しい。

419:Name_Not_Found
12/01/10 15:41:25.91
>>417
「XPathよりquerySelectorの方が遅い」と言われたと勘違いしたに一票

420:Name_Not_Found
12/01/10 15:45:49.99
なーに言ってんだこいつ
文盲の信者はやべえな

421:Name_Not_Found
12/01/10 15:49:01.12
>>420=>>417
低脳レス用マクロでも組んだんか?

422:Name_Not_Found
12/01/10 15:50:40.54
《>413》
XPathおっそいなw

《>416》
querySelectorの方が基本的に遅いぞ

《>419》
「XPathよりquerySelectorの方が遅い」と言われてない



      ____
     /  -- 丶、
    / ノ   ●) ヽ┏┓
   .|  (●, ,⊃ ノ ┏┛
   .ゝ、  `´  .へ ・

423:Name_Not_Found
12/01/10 16:05:20.80
どうせググって検索にヒットしたブログを鵜呑みにして
querySelectorは遅いからgetElementsByTagNameを使えみたいに思ってるんだろ

424:Name_Not_Found
12/01/10 16:05:45.90
>>418
CSSセレクタの拡張がjQueryのセレクタ

chromeのコンソールで下記を実行。2倍から3倍程度qquerySelectorの方が遅い。
逆でも同様の結果。
XPathの書き方によってはXPathの方が遅くなる事もあるけど基本は変わらん。

var i = 10000; console.time('evaluate');while (i--) {document.evaluate('id("r412")',document,null,7,null);};console.timeEnd('evaluate');
i = 10000; console.time('querySelector');while (i--) {document.querySelector('#r412');};console.timeEnd('querySelector');

425:Name_Not_Found
12/01/10 16:06:18.71
qquerySelector

querySelector

426:Name_Not_Found
12/01/10 16:08:56.15
速度はブラウザ依存だからどっちもアホ

427:Name_Not_Found
12/01/10 16:42:40.48
jQueryも昔はXPATH使えたんだよね。取り除かれちゃったけど。

428:Name_Not_Found
12/01/10 16:49:25.01
>>424
綴りを間違えるような時点で
いかにこいつの認識が甘いかわかるなw

429:Name_Not_Found
12/01/10 17:06:20.29
var obj = $(selectors).not(':animated');

よかCSS:notのほうがって思ったけど実際どっちがいいんだろうな

430:Name_Not_Found
12/01/10 17:11:55.84
>>424
Firefox9とSafari5はquerySelectorよりXPathが2~3倍遅いぞ
しかも簡単なものならDOMセレクタとif文でフィルタリングするほうがもっと早いんだよな

431:Name_Not_Found
12/01/10 17:16:00.89
jqueryで書かれたサイトを見ると
こんなサイト見てる自分が恥ずかしくて
ついついbackspaceキーを押してしまう

432:Name_Not_Found
12/01/10 17:28:29.04
結局の所書くXPathやSelector、対象になるHTML次第。


433:Name_Not_Found
12/01/10 17:43:27.19
>>431
TwitterとかWikipediaとかamazonとかか。

434:Name_Not_Found
12/01/10 18:29:31.58
例えばセレクトボックスを操作したりといった
ユーザーの操作を一時的に全禁止するために
document.open()で読み込み中と同じ状態にさせてるのですが
これはどのくらいのブラウザで効果があるのでしょうか?


435:Name_Not_Found
12/01/10 18:32:06.14
Ajax始めたんですが、一度に読み込めるファイルは1個までとあるんですが
例えば3つのtextファイルを読み込みたくなったら
1つ読み込む→完了→次の読み込む→完了とやらなければならないのでしょうか?

436:Name_Not_Found
12/01/10 18:37:55.11
>>435
同期なら順にやるしかないけど、非同期なら3つ同時に進められる。
興味あるならdeferredで調べるといい。

437:Name_Not_Found
12/01/10 18:39:14.92
>435
お前本当は知ってるだろ
荒らしか?

438:Name_Not_Found
12/01/10 18:43:31.62
>>436
ありがとうございます
>>437
いや、本当に知らなかったんです
本に「ココでチェック:非同期通信では1回につき1個しか読み込めないのがルールです」
と書いてあったのでどうしてもやりたい場合どうすればいいのかな?と

439:Name_Not_Found
12/01/10 18:48:10.84
そんな意味のわからん本は捨てちまえ、わりとマジで。

本は例題集くらいに捉えて解説は参考にしてはいけない。

440:Name_Not_Found
12/01/10 18:49:18.13
> ココでチェック
この部分が初心者騙しな気がする

441:Name_Not_Found
12/01/10 18:51:23.65
>>438
1回につき1個は確かに正しいよ。一つのxhrインスタンスから複数個同時に読み込むのは無理だから。
ただ、非同期という条件下でxhrをいくつも用意することで、スタートは"順次"だけども、
読み込みは"並行"して行える。

442:Name_Not_Found
12/01/10 18:54:14.82
Ajaxやらライブラリーやら本来は中級者向けだと思う
というか基礎がしっかりわかるまで後回しにしていい部分

443:Name_Not_Found
12/01/10 18:59:14.68
>>441
詳しい解説ありがとうございます
A(go)、B(go)、C(go)、ABC(end)という形にできるんですね。自分がやりたい事がコレだったので助かりました

とういうことはその場合、場合分けということでjQueryを使ったAjaxの記述方法は止めた方がいいということなんでしょうかね?
$.ajax({~で一くくりになってるので、スタートも終わりも一つ一つやるので
A(go)、A(end)、B(go)、B(end)、C(go)、C(end)としか出来ないと思うのですが

444:Name_Not_Found
12/01/10 19:04:02.59
>>443
同期と非同期を少し勘違いしているような。。普通に$.ajaxで書けないことはないけど、
絡みあう形になるから、そこでjQuery.Deferredの登場。これ以上は説明がややこしくなるんで、
最初は簡単な例から自分で動かしてみたら。

445:Name_Not_Found
12/01/10 19:07:30.77
>>443
だめだこりゃw
jQueryなんか使わんとAjaxのAからやり直せ
というかまず非同期についてちゃんとイメージできてないだろ

とりあえずAjax 非同期でググってヒーヒーいいながら勉強しろ
jQuery使って楽しようとしていいのはその後だ

446:Name_Not_Found
12/01/10 19:08:00.90
了解です、本当にありがとうございました

447:Name_Not_Found
12/01/10 19:09:21.44
っつーか最近は入門書からjQuery教えるのか?
大学でもjQuery教えてるとかこの前このスレで見たけど
初心者にjQuery進めたら肝心な理解が進まないだろ

448:Name_Not_Found
12/01/10 19:13:40.96
ライブラリは大きなブラックボックスだからな
思った事をある程度簡単に実現してくれるかもしれないが
どうやったら思った事を実現できるかの力はつかないな

まあそのバランスが大事なんだけどね

449:Name_Not_Found
12/01/10 19:17:49.23
ここの住民はHTML5の各APIについての質問にどのくらい答えられるの?

450:Name_Not_Found
12/01/10 19:32:47.21
>>449
ここの住人はどんな難しい質問でも答えられるよ


ただしそれが的確な回答かどうかは別の問題だけど

451:Name_Not_Found
12/01/10 19:38:18.64
そのときの回答者が数人程度なら、文殊の知恵が出ることもある。
あまりに多いと船山に登るw

452:Name_Not_Found
12/01/10 19:43:55.90
>>449
WebRTCに興味を持つ人とかAudioとかな人等様々だと思うよ
まぁ時間帯等によりけりだけど


453:Name_Not_Found
12/01/10 19:44:24.60 6w+N2uy0
>>448
専門科目として教えているなら、それはないんじゃないかな
ピュアJSが理解できなければ、大学で学ぶ意味ないと思うし

自分は専門学校の一般教養として「ほーむぺーじのつくりかた」的なレベルで教えてて、
JSも「こう、ヌルヌル動くのはJSよ」と触れる程度
そうなると、時間もないのでjQuery使っちまいます

454:Name_Not_Found
12/01/10 19:49:49.39
JavaができないのにいきなりStrutsから入るようなものか

455:Name_Not_Found
12/01/10 19:58:06.11
時間がないとか言い訳過ぎる
一生jQueryにしがみついて生きていける人は少ないだろう
jQueryっていうのはあくまでも 『流行り』 なんだから
それよりもJSの基礎をしっかり教えた方が何倍もためになる

456:Name_Not_Found
12/01/10 20:01:21.62
>>455
一生jQueryにしがみつくってのは自分から学ぶ姿勢がゼロってことだよね。
時間があればコアを教えるべきだけどさ、jquery使ってこんな事出来ますよーって触りでいいんじゃないかな。
後は興味持った奴が自分で調べて、せっかく学校にいるんだから周りの人にも質問できる。これで仕方ないと思うよ。

457:Name_Not_Found
12/01/10 20:06:55.57
別にそれがJavaScriptの基礎も含むあくまで『JavaScript』の講義なら文句は言わんよ
でも基礎もしっかりできてない人に『jQuery』の講義をするのは問題だと思う

458:453
12/01/10 20:31:39.09 6w+N2uy0
あー
言いたいことは痛いほどわかります、が

『jQuery』の講義、なんてやらんですよ。HTMLもJSも書いてあるのを配って
ここをこう変えるとこうなりますねー楽しーねー、ってやるだけ

所詮一般教養だし、コンピュータの学校でもないし、
そうやって触って興味を持ってもらえれば儲けもん、てレベル

僕らが昔そうだったように、人が書いた完成品の理解できる部分だけ書き換えて
ちょっとずつ学ぼうとする子も、毎クール1人くらいいるよ
そういう子らには、授業外で教えたりもしてる


激しくスレ違いですねスミマセンもうやめましょう

459:Name_Not_Found
12/01/10 20:37:56.73
あーつまり
JavaScriptの講義じゃなくて
PCに慣れましょうねの講義なわけね
それなら話は別

460:Name_Not_Found
12/01/10 20:38:40.65
じゅ、じゅっじゅじゅジゅ後ユ害で教える!?

461:Name_Not_Found
12/01/10 20:45:31.35
先生そこは私のevalですぅ~脆弱性ついひゃらめぇ


462:Name_Not_Found
12/01/10 20:48:06.53
しまった!!
命の変数が君のスコープ内に漏れてしまった!!

463:Name_Not_Found
12/01/10 20:52:07.13
ふむ…やっぱりevalは必要だったな…
いや、ここは不要と言うべきか………

464:Name_Not_Found
12/01/10 20:53:12.29
また始まったのか?

465:435
12/01/10 21:57:31.96
何度も悪いですが、XMLHttpRequestを使って複数のURLからファイルを読み込む例がググってもなかなか見つからないのですが
やはりやるべきではないのでしょうか

466:Name_Not_Found
12/01/10 22:03:54.59
jQueryでajax関数を使い、success時のコールバック関数の中でdygraphのチャートを描画させることは出来ないのでしょうか?
以下のようなコードを書いたのですが、グラフが描画されません。。

<script type="text/javascript">
$(function() {
$.ajax({
url: '/hoge',
type: 'GET',
dataType: 'xml',
success: function(xml){
var g = new Dygraph(arg1, arg2);
}
});
});
</script>

467:Name_Not_Found
12/01/10 22:11:53.46
>>465
その複数のURLは同一のドメイン?
でなければ、クロスドメインで通信できない場合がある

適当な例を書いておく
// JSONファイルを取得する
var xhr = new XMLHttpRequest();
xhr.open('GET', 'URLリンク(example.com)', false);
xhr.send();

return JSON.parse(xhr.responseText);


468:Name_Not_Found
12/01/10 22:19:11.80
>>467
ありがとうございますここからやってみます
実行するhtmlと同一ドメインにあるa.txtとb.txtを読み込むのをjQueryの$.ajaxを使ってやっていました

469:Name_Not_Found
12/01/10 22:24:12.00
>>466
Dygraphを利用したことがないけど、気になったのはDygraphの引数かな
arg1とarg2の値はどうなってるの?

それとAjaxが原因かもしれないから、successだけじゃなくerrorも入れたら?

470:Name_Not_Found
12/01/10 22:40:05.21
>>466
1. var g = new Dygraph(a,b); のみで試す。ajaxを外す。
2. firebugのネットタブからAjaxの結果を調べる。

471:Name_Not_Found
12/01/10 23:21:37.48
chromeのコンテント・スクリプトについてです。
コンテント・スクリプトからそのページのグローバル変数にアクセスするにはどうしたらよいのでしょうか。
例えば、youtubeのページはグローバルオブジェクトのytがあります
URLリンク(www.youtube.com)
グローバルオブジェクトですので、↑のページでデバッガを開いてコンソールで「yt」と書いたらオブジェクトを取得する事が出来ます。

ですがコンテント・スクリプトでconsole.log(yt)としても「Uncaught ReferenceError: yt is not defined」と言われてしまうのですが
どうすればytにアクセス出来るのでしょうか。

同様に、jqueryを使おうと思った時にページ側で読み込まれていて、それを使いたいです。
例えばこのページはjquery-1.3.min.jsを読み込んでいます。
そしてコンテント・スクリプト内でwindow.jQueryを使いたいのですが、アクセス出来ません。
view-source:URLリンク(www.nicovideo.jp)

472:Name_Not_Found
12/01/10 23:33:17.88
>>471
単純にいうとChromeのContent Scriptが動いているページとYouTubeのページは別物だから

473:Name_Not_Found
12/01/10 23:38:07.56
>>471
location.href="javascript:/*ページ側の変数を使うコード*/;";
// or
var script=document.createElement('script');
script.textContent="/*ページ側の変数を使うコード*/";
document.body.appendChild(script);

474:Name_Not_Found
12/01/10 23:38:25.56
>>471
お前は荒らしか?
意味も無くニコ動やYouTubeのしかもよくわからない動画ページのリンク貼るなよ

475:Name_Not_Found
12/01/10 23:41:10.77
この程度で荒らしとかお前頭わいてんのか

476:Name_Not_Found
12/01/11 00:05:43.60
この程度で頭わいてんのとかお前荒らしか

477:Name_Not_Found
12/01/11 00:13:49.18
初心者 alert
中級者 console.log
上級者 テストツール

478:Name_Not_Found
12/01/11 00:22:13.75
達人 alert

479:Name_Not_Found
12/01/11 00:45:20.04
最近はサイトでアラート見かけること無くなったなあ。
うざいから絶滅してほしいね。

480:Name_Not_Found
12/01/11 00:54:43.12
何度も本当にすみません。さっきから色々なAjaxについてのサイト巡ってるんですが
$.ajax({
   url: './a.txt,
   type: 'GET',
   dataType: 'text',
   error: function(xhr,status){
      $("#message").html("error");
   },
   success: function(data, status, xhr){
      $("#meesage").html("Success");
   }
});
この場合のa.txt、b.txt、c.txtを一括で取得する方法がどうしても解りませんでした
自分としてはこの$ajaxのURLを変えてこれ自体を3回繰り返すとか、successやerror時に他の関数で読み込んだりするの考えたのですが
結果的に全部3回通信するのでどうしても時間がかかってしまうので。本当に何度もすみません

481:Name_Not_Found
12/01/11 00:57:39.08
>>473
script.textで

482:Name_Not_Found
12/01/11 01:08:59.12
>>480
そのコードでa.txtが「非同期」で読み込める
url変えて三つ並べると、順番にGETのクエリが送られる
順番が保証されてるのはこのクエリ送信の順番だけ
受け取りは相手鯖からの到着順で順不同になる

483:Name_Not_Found
12/01/11 01:34:09.57
>>480
3つ取得するんだから通信は3回になる
1回で済ませたいのならサーバ側でその3つを1つにまとめてやるしかない

484:Name_Not_Found
12/01/11 01:43:57.38
>>480
一回のリクエストで複数のファイルを取得するのは無理だよ。
リクエストとレスポンは一対一の関係だから、場合によっては>>483みたいにサーバ側で一本化する必要がある。

同期であれば時間がかかるのは分かる。
A----|B----|C----|

でも非同期だったら取得が同時に進むからそこまで時間はかからない。
というか、サーバ側で一本化したところで3つ程度のファイル取得であれば大して変わらないかも。
A----
 B----
  C----| (うえのABCと比べたときに、短くなってるでしょ。これが非同期。)

質問の意図がよくわからないけど、
・リクエストとレスポンスは一対一の関係
・この場合は普通非同期で3つ同時に読み込むのが普通
・非同期を簡単にまとめる手法として Deferred がある

485:Name_Not_Found
12/01/11 01:51:32.12
ネットワークをほんの少しでも理解していればわかるはずなんだが
ネットワークはキャッチボール。3つも一度に投げれない受け取れない

486:480
12/01/11 02:03:15.11
>>482-484
これ異常無いほどの感謝です、助かります
自分としては複数のリクエストするときの記述方式がわからなかっただけで
スレッドをムダに消費して迷惑をかけました

487:Name_Not_Found
12/01/11 02:06:32.15
> 自分としては複数のリクエストするときの記述方式がわからなかっただけで
最初からそれ言えよ
くだらん説明しちまったじゃねーか

488:Name_Not_Found
12/01/11 02:07:00.73
iframe を 3つ用意しておいて、親で受け取れば良いよ。

489:Name_Not_Found
12/01/11 03:21:07.62
誰も具体的なコード教えてあげてなくてワロタw

490:Name_Not_Found
12/01/11 04:23:00.59
関数本体からはパラメータ宣言が優先されるというルールがあるみたいですがパラメータ宣言って何ですか?

491:Name_Not_Found
12/01/11 04:36:22.50
>>490
var a = 0;
function test() {
var a = 1;
alert(a);
}
test()の中が関数本体のこと
外側と内側で同一名の変数aが宣言されているときは内側が優先される
なので、アラートされるのは1

492:Name_Not_Found
12/01/11 04:52:04.89
>>491
ありがとうございます。
それの事だったんですね。

493:Name_Not_Found
12/01/11 04:52:43.37
>>490
>パラメータ宣言って何ですか?
肝心なことを書き忘れてた
パラメータ宣言ってのは、varやfunctionのことね

494:Name_Not_Found
12/01/11 05:27:56.12
>>490
パラメータだから関数の引数のことを言っているんだと思うが、
元の文章を読まないことには何のことだか分からない

495:Name_Not_Found
12/01/11 07:56:21.99
tablesorter2.0について質問です。
URLリンク(tablesorter.com)
上記サンプルのように動的に追加した行に対して、
pagerプラグインが読み込んでくれません(ページ送りが出来ない)。
何かいい手はありますか?ブラウザはfirefoxです。

496:Name_Not_Found
12/01/11 08:46:38.36
最終手段を最初に書いとくと
動く物を自分で作ればいい


497:Name_Not_Found
12/01/11 11:10:29.94
急に過疎

498:Name_Not_Found
12/01/11 11:19:55.92
そのまま写せばいいんじゃないの?

499:Name_Not_Found
12/01/11 11:28:16.50
まともに使えんようなプラグイン使おうとするなよw


500:480
12/01/11 11:38:45.20
>>487
具体的な例としては
array[path1、path2、path3]

for(i=0; i<3; i++){
   $.ajax({
      url: 'array[i],
      type: 'GET',
      dataType: 'text',
      error: function(xhr,status){
         $("#message").html("error");
      },
      success: function(data, status, xhr){
         $("#meesage").html("Success");
      }
   });
}
こんな感じでしょうか?それとももっと良い記述方法があるのでしょうか?
Deferred使うにしても、元のコレがわからないので・・・。

501:Name_Not_Found
12/01/11 12:26:48.67
>>498
そのまま写すと、pagerは初期状態の行しか表示できません。

502:Name_Not_Found
12/01/11 12:41:24.57
>>495
tablesorterはわかった
だけど、pagerなんて名前のはいくつもあってどれかわからない
それのリンクも貼って

それと憶測だが、新たに行が追加されたらpagerの内容を更新させてやらないといけないのかも

503:495
12/01/11 13:43:58.61
>>502
すいません、下記のpagerです。
URLリンク(tablesorter.com)

Googleで調べてみましたが、pagerの内容の更新が分かりませんでした。

よろしくお願いします。

504:Name_Not_Found
12/01/11 13:45:40.87
>>500
jQueryよく知らんかったが非同期がデフォなんだな
jQuery使わんでもいいような気もするがそれでいいんじゃね


505:Name_Not_Found
12/01/11 13:48:36.72
>>503
まず10日は自力で調べなさい
それでもわからなかったら一旦諦めて別の方法を10日模索する
それでもダメなら聞きに来なさい

506:Name_Not_Found
12/01/11 13:51:52.81
jQueryってどこまで対応範囲広げるんだろう
AudioとかVideo関係も需要が高まればサポートするのかな

つうかjQueryだけの質問はもう専門スレに行って貰った方がいい気がする
今はほとんど機能してないけど時期まともになるでしょ

507:Name_Not_Found
12/01/11 14:09:21.32
>>500
なんか見てるだけでムズムズしてくるな
効率悪すぎ

508:Name_Not_Found
12/01/11 14:12:19.20
>507が本来0.1秒もかかる処理を0.01秒にしてくれるらしいよ

509:Name_Not_Found
12/01/11 14:16:51.79
・ 【誰か】jQueryのここがわからない 2【助けて】
スレリンク(tech板)l200

ム板にあった

510:Name_Not_Found
12/01/11 14:17:28.10
>>509
そこは削除依頼が出てる

511:Name_Not_Found
12/01/11 14:21:32.62
動作中のsetTimeoutとsetIntervalを全て削除する方法を教えてください

512:Name_Not_Found
12/01/11 14:22:06.30
jQueryはここで質問していいが、制作依頼は勘弁してほしいな
JavaScriptの基本を学ばずにjQueryに入って質問する人はとか

513:Name_Not_Found
12/01/11 14:29:53.08
>>500は製作以来に入るのか?
過去にあった例だがanimateで一つの要素を順番に動かすのにsetTimeoutとsetIntervalを使ってるけど違和感感じての質問は良しと思うが

514:Name_Not_Found
12/01/11 14:31:39.06
だから答えたくない奴は黙ってればいいだろzk

515:Name_Not_Found
12/01/11 14:45:38.56
全員黙ってると質問がどうしてスルーされたのかわかんないんじゃない

516:Name_Not_Found
12/01/11 15:03:37.72
>>514
> zk
何もそこでズッコケんでもw

517:Name_Not_Found
12/01/11 15:06:32.80
>>503
こんなpluginあるんだいいなこれ

518:512
12/01/11 15:09:02.66 K19RhCSN
>>513
制作依頼はいいすぎだったかもしれないが、回答しても理解されずに質問がループ状態で質問者にその意図がなくても制作依頼になるパターンを懸念してる
>>500は制作依頼ではないが、このまま質問を続ければそうなる可能性はある

519:Name_Not_Found
12/01/11 15:13:26.44
>>500はいいだろ。>>503が酷い。

520:Name_Not_Found
12/01/11 15:35:44.24
>>500は俺もいいとおもうけど>>507みたいなののせいで泥沼っ・・・!泥沼っ・・・!状態に陥るんだなーと

521:Name_Not_Found
12/01/11 15:43:40.51
>>507はなんかレスしたいだけだろ


522:Name_Not_Found
12/01/11 15:44:12.85
jQueryCSSの質問で申し訳ないんですが、以下のコードで先行実装CSSのbox-alignやbox-packを使って
IEなどに対応させたいなどと思ってるんですが、どうもこのコードでやってもできないようなんですが
何か問題があるんでしょうか?

$(function(){
$('body').css({
'display':'box',
'box-align':'center',
'box-pack':'center',
});
$('#test').css({
'background':'#C00',
'width':'300px',
});
});

URLリンク(jsbin.com)

523:Name_Not_Found
12/01/11 16:02:55.12
jQueryでXMLの要素の値が.text()メソッドで取得できないのですが、
理由を教えて頂けないでしょうか。よろしくお願いします。
コードは以下のようなものです。

var xml = "<?xml version='1.0' encoding='utf-8'?>
<node>
<value>1</value>
<value>2</value>
</node>"

var text = $('value', xml)[0].text(); // Chromeでデバッグすると、そのようなメソッドはないというエラー

524:Name_Not_Found
12/01/11 16:06:21.08
>>500はスルーされてるんだかされてないんだかよくわかんねぇな

525:Name_Not_Found
12/01/11 16:10:34.56
>>500
だから俺はfor(){アジャックス}でいいんじゃねーの?と
たぶんこれ以上の方法は思いつかない。そして無いと思う。

526:Name_Not_Found
12/01/11 16:28:42.33
>>523

自己解決しました。

527:Name_Not_Found
12/01/11 16:34:30.97
>>523
[0]はjQueryオブジェクじゃなくなる。

var text = $('value', xml).eq(0).text();


528:Name_Not_Found
12/01/11 17:06:13.06
>>525
Deferred()使えば

529:Name_Not_Found
12/01/11 17:33:29.38
今回の例だとDeferred関係無いだろ


530:Name_Not_Found
12/01/11 17:42:31.58
えっ

531:Name_Not_Found
12/01/11 17:42:47.81
なに!?

532:Name_Not_Found
12/01/11 18:03:15.60
>>500
とりあえず、コードには問題はない
期待通りに動作するのならそれでいい
そもそもどんな挙動を期待しているのかはっきりしないので何とも答えにくいな

533:Name_Not_Found
12/01/11 18:04:42.90
Deferred()使ったりそれより早くできるんだったらそのサンプル程度に書いてやりゃいいのに

534:Name_Not_Found
12/01/11 18:17:15.87
Googleのplusone.jsを読み込むときに
<script src="URLリンク(apis.google.com)">{lang:"ja"}</script>
と記述されていますが、コード側で{lang:"ja"}はどのように読み込まれているのでしょうか?
普通に自分自身を読み込んでいるscriptタグを探して読み込んでるだけでしょうか?

535:Name_Not_Found
12/01/11 18:20:49.18
ソース追わないと分からないけど、取得方法はこんな感じ。
・SRCが固定だからスクリプト要素の集合から特定できる
・実行中に最後のスクリプト要素を参照する方法があるが、あれは不安定。
・いずれかの方法で取得してparseJson

536:Name_Not_Found
12/01/11 18:41:45.77
>>535
横からだけど不安定な理由を押して欲しい。
script[defer] の話?

537:Name_Not_Found
12/01/11 18:55:11.36
>>536
それもあるし、あの手のコードは一番最初に置かないといけないでしょ。
そんな制約がある以上>>535の前者の方法には勝てっこない。

それからブログパーツ全般の話になるけど、例えばスクリプトタグにIDを振ると
そのサイト上で一つのIDを占領してしまうことになる。これはもうひとつスクリプトタグを追加して
そこで var hoge_config={} みたいにしても結果は同じ。

話を戻して、+1 のコードなら俺はスクリプト全体の集合から固定のSRCを使って要素を特定する。
これならIDも変数も何一つ占領しないで済む。実際にGoogleが中で何やってるかは知らんけどね。

538:Name_Not_Found
12/01/11 18:57:12.16
いい忘れたけど、2つ目のスクリプトで関数を使う方法もある。
これもIDとか変数を使わないから安全。
<script>plusone.config({...});</script>

539:Name_Not_Found
12/01/11 19:00:55.24
jQueristerはいい加減目障りだから消えろよ
専用スレがあるだろ

540:Name_Not_Found
12/01/11 19:01:27.24
(function($) { /* 関数本体 */ })

この式が無名関数への参照を結果として返すとはどういう意味でしょうか?

541:Name_Not_Found
12/01/11 19:04:19.57
>>537-538
最後のスクリプトを参照するコードを一番最初に書かないといけない理由はないよ
setTimeout のコールバック関数内に書くような非同期処理は駄目だけど、スクリプトコード内のどこに書いても動く
それからscript要素のid属性は HTML4, HTML5 で認められてないのでブラウザ依存だね


542:Name_Not_Found
12/01/11 19:04:47.58
>>539
両方人を表す〇〇istと〇〇erを重ねるのって変じゃないか?
jQueristかjQuererでいいんじゃねーの?

543:Name_Not_Found
12/01/11 19:06:20.84
>>540
こういうこと
var f = (function($) { /* 関数本体 */ }); // 括弧はいらない

544:Name_Not_Found
12/01/11 19:07:18.44
>>541
ほんと?これの後に取得してみて。
document.body.appendChild(document.createElement("script") );

545:Name_Not_Found
12/01/11 19:07:43.35
このスレの住民は本当に他人のレスの細かいとこ突いて喧嘩仕掛けるの好きだな
質問じゃないレスはみんな無視すれば平和になるのに

546:Name_Not_Found
12/01/11 19:11:35.12
>>544
さすがにこれは揚げ足でしょ
最後から2つめの要素を取得すればいいってことは誰でもわかるし

547:Name_Not_Found
12/01/11 19:12:50.49
>>546
DOM操作なんて当たり前だし、モジュール分けしたスクリプトを読み込むとか日常茶飯事。

548:Name_Not_Found
12/01/11 19:13:53.75
>>545
つ 鏡

549:Name_Not_Found
12/01/11 19:15:55.94
あのコードは最初に置くというルールがないと成り立たない。ゆえ不安定と言われるんじゃないの。

550:Name_Not_Found
12/01/11 19:19:07.98
>>547
モジュール操作も順番を間違えると動かないはず
例えば、jQueryプラグインはjquery.jsを先に読み込まないといけないから不安定だといえる?

551:Name_Not_Found
12/01/11 19:24:16.07
>>541
HTML5ではいいんじゃない?

552:Name_Not_Found
12/01/11 19:24:17.22
jqueryっていうかjavascriptのライブラリ総合スレがあってもいいんじゃないかと思う

553:Name_Not_Found
12/01/11 19:24:39.20
src 先をハードコードして指定する方が不安定と思うけど。

554:Name_Not_Found
12/01/11 19:28:15.40
>>551
ごめん、HTML5ではid属性使えたね
URLリンク(www.whatwg.org)


555:Name_Not_Found
12/01/11 19:32:39.93
設計の問題と思うか、不安定と思うか、の違いじゃない?
いずれにしても「一番最初」でなくても動くね

556:Name_Not_Found
12/01/11 19:52:17.05
>>550
プラグインは本体の後に読み込むというルールがあるよね。それで、>>535
後者の方法にも>>544で示すように最初に実行しないといけないというルールがある。
でも、>>541はそのルールが存在しないと言ってる。そのことに対して、反対したわけ。

そもそもプラグインは棚違いでしょ。

557:Name_Not_Found
12/01/11 19:58:17.44
付け足すけど、
>>535の後者はクロスブラウザでないコードを書くようなもんだよ。

スクリプトタグを動的に追加することを"揚げ足"だと言われたたけど、
そうしたコードが実行されることもあり得るんだから、その時にあのコードは
動かないことになる。

こうやって動かないケースが発生しうることが簡単に推測できるんだから
不安定と言われても仕方ない手法だと思うね。

558:Name_Not_Found
12/01/11 20:00:24.69 wnh1trwj
久々に見たら貼り方変わってたw
URLリンク(www.google.com)

559:Name_Not_Found
12/01/11 20:01:58.85
>>558
asyncだったらなおさら使えないな。

560:Name_Not_Found
12/01/11 20:17:22.09
>>557
それなら、URL を参照する方法はなおさら不安定だな。

561:Name_Not_Found
12/01/11 20:21:28.04
>>560
もちろん俺もSRCによる特定が不安定であることは十分承知してるが、
あの条件下でより安定な方法があるなら示してみて。

562:Name_Not_Found
12/01/11 20:23:26.27
>>561
「なおさら不安定」と言ってるんだから…

563:Name_Not_Found
12/01/11 20:26:41.37
>>562
先頭に配置するコードよりSRCによる特定の方が不安定ってことでしょ?
>>558を見ると未だにURL変わってないけどね。
それと、コードがキレイになる効果もあるんじゃない。好みの問題だけどねえ。

<script type="text/javascript" src="hoge">
{nane: "taro", city: "tokyo"} // 一つでまとまる。
</script>


もう晩御飯だ。いてきます。

564:Name_Not_Found
12/01/11 20:31:44.50
ブラウザのブックマークレットに入れてあるjavascriptで、
いまみているページが「空白のページ」で(URLになにもない初期状態の)
あるか判定したいのだけど、どうすればできますか?
location.hrefではどうもダメなようです。

565:Name_Not_Found
12/01/11 20:43:21.00
すべてのWeb板みてきたがjQuery専用スレなんてなかったぞ

566:Name_Not_Found
12/01/11 20:46:40.62
>>564
ブラウザは?

567:564
12/01/11 21:03:26.72
>>566
最新のSafari・Chromeでチェックしてます。
最新のIE・FF・Chrome・Safariは対応したいです。

568:Name_Not_Found
12/01/11 21:09:03.26
一般的には常識とされている、
 真実は一つだけ
 怒りは自然な感情
 戦争・テロは無くならない
 死刑には殺人の抑止力がある
 虐められる側にも虐めの原因がある
 自己チューな人間ほど自己愛が強い
などの間違いを解説中
感情自己責任論

569:534
12/01/11 21:22:53.04
>>535
普通に2つのscriptを使ったほうが良さそうですね。ありがとうございました。

570:Name_Not_Found
12/01/11 21:31:43.12
>>565
全部このスレで統合らしい

571:Name_Not_Found
12/01/11 21:32:14.41
>>534
質問と関係ないけど
こういうのはevalでパースしていいケースだよね
Googleさんがどうしてるかが気になるところだ

572:Name_Not_Found
12/01/11 21:36:33.55 wnh1trwj
>>564
document.URL=="about:blank"

でいけるかなーと思ったけど、空白ページの時
webkitはdocumentはあるけどdocument.URLは空っぽみたい
ので、こいつらを場合分けしてあげれば、まあまあ出来るんじゃないかな、と

573:Name_Not_Found
12/01/11 21:53:06.41
>>564
空白のタブのURIは標準化されてないから実装依存。
全ての実装を調べて場合分けするしかない。

if (uri === 'about:blank' || uri === 'chrome://newtab/') {
console.log('blank tab');
}

Opera 11.60 はコンソールが効かないのでよくわからん。

574:573
12/01/11 21:56:41.49
Opera は abount:blank でも新しいタブを生成できるが、Spped Dial はDOMを生成してないっぽいな
故に JavaScript で操作できない

575:Name_Not_Found
12/01/11 22:06:24.79
>>571
普通は JSON.parse か new Function を使うと思う

576:564
12/01/11 22:37:06.38
>>572
>>573
ありがとうございます。
標準化されてないっぽいなーと思ってたら、やっぱりですか。
nullやらundefinedでlocation.hrefチェックしてましたが、
意味がなさそうだったので。
ブラウザごとの仕様を調べなおしてみます。

あ、Operaは諦めますw


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch