12/01/11 22:37:06.38
>>572
>>573
ありがとうございます。
標準化されてないっぽいなーと思ってたら、やっぱりですか。
nullやらundefinedでlocation.hrefチェックしてましたが、
意味がなさそうだったので。
ブラウザごとの仕様を調べなおしてみます。
あ、Operaは諦めますw
577:Name_Not_Found
12/01/12 00:02:17.90
>>575
JSONなら{"lang":"ja"}こう書かなきゃならんし
new Functionやscriptタグに読ませて実行するのはevalと大差ないよね
578:Name_Not_Found
12/01/12 00:20:02.22
>>576
opera関係者さんですか?ステマ乙です
579:Name_Not_Found
12/01/12 00:20:49.91
jQueryでHighslideみたいな拡大効果できるライブラリありますか?
「お前が作れ」っていうのは無し
580:Name_Not_Found
12/01/12 00:24:29.52
ベンダープレフィックスを指定して使うCSSプロパティを.cssで使う場合ってどうすればいいんでしょうか?(jQuery)
普通に-webkit-とか指定しても効かなかったんで何か方法があるのかなと思って聞かせてもらいました。
581:Name_Not_Found
12/01/12 00:38:34.93
jQuery の質問が多いのは、単に使用者が多いだけでなく、使用者の学習意欲が低いからなんだと思う今日この頃。
582:Name_Not_Found
12/01/12 00:41:26.36
>>580
-moz-aaaa => MozAaaa
-webkit-aaaa => WebkitAaaa
-o-aaaa =>OAaaa
-ms-aaaa =>MsAaaa
583:Name_Not_Found
12/01/12 01:08:04.52
>>582
ありがとうございます。
教えていただいてこんな事言うのも失礼なんですが、結果は得られませんでした…。
良かったらその情報が載ってるサイトなどがあったら教えていただきたいです。すみません。
584:Name_Not_Found
12/01/12 01:21:24.11
>>581
たぶん同一人物
585:think49 ◆bKk/qcAKuM
12/01/12 01:39:58.49
>>571
>>534の URLリンク(apis.google.com) には eval, Function, JSON の文字列が見られないので独自にパースしてるんじゃないでしょうか。
構文に制約を設ければオブジェクト初期化子は比較的短いコードで書けます。
URLリンク(gist.github.com)
(plusone.js はクオート付きのプロパティ名ではないようなので実際はもう少し短く書けるはず。)
>>577
new Function はグローバルスコープですので、eval よりは安全だと思います。
586:Name_Not_Found
12/01/12 01:52:05.83
>>583
URLリンク(www.w3.org)
587:Name_Not_Found
12/01/12 01:54:40.82
>>585
plusone.jsがまた別のスクリプトを呼び出すよ。URLは長いから書かないけど。
588:Name_Not_Found
12/01/12 01:58:13.73
>>580
URLは>>586なんだけど、lower camel case だから>>582は間違ってるね
-moz-hoge => mozHoge
-webkit-hoge => webkitHoge
-o-hoge =>oHoge
-ms-hoge =>msHoge
589:588
12/01/12 02:15:45.94
ごめん、やっぱ訂正
>>586も Media Queries を指してるからURL間違ってるね
正しいURLを探すのはめんどいんのでパス
590:Name_Not_Found
12/01/12 02:19:49.93
>>588
-の後は大文字だぞ、インスペクタ覗いてこい
591:583
12/01/12 02:21:15.47
度々ありがとうございます。
jQueryはCSS3プロパティ実装済みといっても結構気難しい所があるんですね…
Google使っていくら検索しても情報が少なすぎて参りました。
とりあえず今は公式で公開してるCSSHookを勉強してます…。
592:Name_Not_Found
12/01/12 02:32:54.60
>>585
「安全」の意味合いが違う気がする。
コードの汚染よりもセキュリティ面で問題視されてると思う。
593:Name_Not_Found
12/01/12 02:43:42.05
>>580,591
驚愕の事実。(GC16)
URLリンク(jsfiddle.net)
どういう確かめ方をしたんだ…。
594:Name_Not_Found
12/01/12 02:56:25.92
<input type="checkbox" name="lang0" value="PHP">PHP
<input type="checkbox" name="lang1" value="Perl">Perl
<input type="checkbox" name="lang2" value="Java">Java
for(var i=0 ; i<=2 ; i++){
obj = eval("document.form.lang"+i);}
で動きますが、
<input type="checkbox" name="lang[0]" value="PHP">PHP
<input type="checkbox" name="lang[1]" value="Perl">Perl
<input type="checkbox" name="lang[2]" value="Java">Java
のとき、
for(var i=0 ; i<=2 ; i++){
obj = eval("document.form.lang["+i+"]");}
で動きません。
eval("document.form.lang["+i+"]");が間違っていると思うのですが、
[と]で不具合が出ていると思うのですが、どうすれば動きますか?
595:Name_Not_Found
12/01/12 03:00:07.06
これは eval のちょーわるい見本w
596:Name_Not_Found
12/01/12 03:10:41.15
>>594
プロパティ名に角括弧を含むプロパティはドット記法では参照できない
document.form['lang[0]'] というように角括弧記法を使って文字列で指定しなければならない
そしてこの角括弧記法を使えばevalを使う必要はない
前者は document.form['lang' + i] 後者は document.form['lang[' + i + ']']
そもそも同じ種類のチェックボックスに違うnameを指定するのはなぜ
597:Name_Not_Found
12/01/12 03:11:00.13
無理やろ
598:Name_Not_Found
12/01/12 03:11:27.85
name 属性に [] 使うのって PHPer だよね。
JavaScript が本職じゃないにしても、その発想はないと思うぞ。
599:Name_Not_Found
12/01/12 03:18:49.03
>>594
obj = eval("document.form.lang["+i+"]"); は obj = document.form.lang[i]; と同じ
わざわざeval()で評価する意味がわからない
eval()が話題だからって無理に使わなくても
600:583
12/01/12 03:27:57.15
>>593
あぁぁあぁ…orz
完全に頭の悪い書き方してました・・。
かなりの勉強不足ですね。。本当にすみません、そしてありがとうございました。
$('#element').css({
"webkitBoxShadow":"0 0 10px #000",
});
601:Name_Not_Found
12/01/12 03:29:54.34
>>593
きっと「-webkit」で検索かけたんだろうな
Googleはハイフンから始まるワードだとそのワードを含めない結果を返すから
-webkit が含まれるページは、ほぼ見つけられないわけだ
602:583
12/01/12 03:33:35.16
いや検索するときはjQuery+vendorprefixなどで調べてました。
目的は、IEとかでまだ実装されてないCSSを実装させようと思ってたんです。
transitionとかアニメーションとかですね・・。
jQueryの1.4あたりでCSS3はそれぞれインプットされてるって聞いてたんで
603:Name_Not_Found
12/01/12 03:36:05.26
夜更かしは美容に良くないよー。
604:Name_Not_Found
12/01/12 09:12:17.62
グローバル変数ならwindow["name"]
ローカル変数ならarguments["name"]
で取得できるのですが
どうやら後者は一部の新しい環境では動かなくされているようで
ローカル変数でも前者のようにするにはどうしたらいいのでしょうか?
605:594
12/01/12 09:36:18.91
みなさまありがとうございました。。
チェックボックスの値を取得する方法を検索して試行錯誤してました。
そこにevalを使っていたものでして、evalは使いたくないので、
あとでevalを使わない方法を調べる予定でした。
606:Name_Not_Found
12/01/12 09:59:48.53
あほすぎる
607:Name_Not_Found
12/01/12 10:03:34.88
>>604
オレの知る限り、ローカル変数のベース(グローバル変数ならグローバル)オブジェクトに
アクセスする手段はない。ローカル変数の場合、前者のようなアクセスはできない。
arguments["name"]は何かの勘違いか?
昔はargumentsオブジェクトからローカル変数にアクセスできてたのか?
608:Name_Not_Found
12/01/12 10:14:09.36
>>604
eval(name)
>>607
できてた
609:Name_Not_Found
12/01/12 10:22:40.63
今でもバージョン指定すれば使えるよ
610:Name_Not_Found
12/01/12 13:23:18.77
evalを濫用すると任意のスクリプトを実行されてしまうのは
理解できましたが、そのことがなぜ一意に危険視されるのかわかりません
DBなどにアクセスする可能性がある場合以外に
クリティカルな危険性があるものなのですか?
611:Name_Not_Found
12/01/12 13:46:19.04
>>610
個人でやるなら好きにしろ。必要ないけどなw
クライアントが別にいるならフォーマットを厳守しなければ、
意図しない動作が起こることを告げておけ
仕事なくなるけどなw
612:Name_Not_Found
12/01/12 14:55:53.27
JavaScript エンジンそのものに特定コードに対する脆弱性が存在したり、
Ad○be 製品の様な脆弱性だらけのプラグインに不正なファイルを読み込まされたり、
定期的にページ内の入力監視されて外部に送信されたり、Cookie 盗まれたり。
eval はインタプリタを呼び出すわけで、JavaScript 全般にまつわる脆弱性を伴う、という話。
jQuery にもちょっと前まで、XSS の脆弱性があったから、古いバージョン使ってると
場合によってはそのページも危ない (レアケースだと思うけど)。
613:610
12/01/12 15:00:20.01 r5y39zoq
>>611
自分は作り手ではなく、ただの経理屋なんです
週末に個人的に勉強してるレベルです
私が知るかぎり、evalをユーザに使われることでサーバが脅威にさらされるのは
いわゆるウェブサービスのような、サーバサイドと連動するごく一部のウェブページであって
その他大多数を占める静的なページでは、危険と言うほどの問題はないのではないかな
と思っているのですが、やっぱり素人の安易な発想なんでしょうか
また、例えば先述のGoogle+1のJSONをパースするような場合でも
(function(){
var json = /*<script>要素内のJSON文字列*/;
var dat = eval(json);
/* APIに向けてdatの内容を投げる */
})();
と書いたところで、このevalにユーザスクリプトが触れることが出来るものですか?
614:610
12/01/12 15:02:34.46 r5y39zoq
>>612
レスありがとうございます
> 定期的にページ内の入力監視されて外部に送信されたり、Cookie 盗まれたり
これは、例えば私が悪意あるスクリプトを実行したとして
私以外のコンピュータの入力監視やCookieの盗聴ができてしまう
ということでしょうか?
615:Name_Not_Found
12/01/12 15:02:51.40
>>587
それ見てみるとコード内にevalは存在するね。見た感じJSON関連かな。
肝心の>>534のパラメータをどうやって読んでるかだけど、
多分これ。
try{n=(new Function("return ("+g+"\n)"))()}catch(p){}
>>575ちゃんのエスパーした通りnew Functionのようです。
evalよりはマシって事なんですかね。
616:Name_Not_Found
12/01/12 15:10:43.26
>>613
Webが与える脅威なんか本島に脅威と言えるものは何もないから何でも使えばいいよ
617:Name_Not_Found
12/01/12 15:14:25.89
>>614
入力監視や Cookie を盗む行為なんかは、ブラウザのページ毎に
行われるものだけど、「悪意あるコードの内容」如何では、
Gumblar みたいに、それこそ何でも実行されてしまったり。
618:Name_Not_Found
12/01/12 15:32:53.76
>>472-473
ありがとうございます。
以前から変わってないみたいで、いまだに直接アクセスは出来ないんですね。
googleにまだバレてないすごいトリッキーな事をしているならともかく
こんな簡単な方法がずーっと使われてるんだから、公式でアクセス出来る手段提供して欲しいなー
619:610
12/01/12 16:54:22.82 r5y39zoq
>>617
つまり、書いたJS自体には問題がなくても
それとは全く別の方法でサーバに侵入され、Flashなどの別のコンテンツを書き換えるなどの
手法により攻撃性を持ったプログラムが、そのJSを利用する可能性がある
つーことですかね
なんか話が壮大になってしまいましたね
みなさん色々ありがとうございました
また少し勉強してわからないことがあったら質問させて頂きます
620:Name_Not_Found
12/01/12 17:04:05.49
>>614
cookieを盗“聴”ってのも変だな。
621:Name_Not_Found
12/01/12 17:17:07.04
壮大って言っても、実際にあったことで、それも長期に渡って大流行したことなんだよな。
622:Name_Not_Found
12/01/12 19:02:32.92
>>615
マシとかじゃなくてevalは将来削除されたり
一部の環境で非サポートになるかもしれないから
623:604
12/01/12 19:06:21.44
すみませんevalはできれば使いたくないのですが
他に方法はないでしょうか?
624:Name_Not_Found
12/01/12 19:35:44.54
>>622
どこソース?
ECMAScript5 の strict mode でも非推奨にはなってないけど。
625:Name_Not_Found
12/01/12 19:37:56.96
>>622
うそつけ。
一部の環境で動的なコードが制限されるとしたらnew Functionだって同じ事だろ。
626:Name_Not_Found
12/01/12 19:46:30.47
new Functionと同じってことはない。スコープの差はデカい。
627:Name_Not_Found
12/01/12 20:39:54.74
setTimeout に文字列としてコードを渡したり、innerHTML 内に属性としてコードを書いたりできるし。
仮に eval だけ廃止しても意味ないよな。
628:Name_Not_Found
12/01/12 20:51:06.01 g3N5dQ30
IE9ではtry-catchで例外処理する仕組みに仕様変更はありますか?
javascriptの問題なのかわからないのですが
ブラウザをIE8からIE9に変更したところ例外処理が実行されるべきところで例外処理されず
ActiveXが正常に動かなくなります。
ActiveXコントロールのプロパティに値を設定するのですが、
範囲外の値が設定されたらThrowErrorでエラーを返すようにしています。
例えば値が0/1以外のときにエラーを返すプロパティで以下のようにすると
IE8までは例外発生のダイアログが出ますが、IE9では出ません。
try
{
OCX名.プロパティ名=2;
}
catch(e)
{
alert("例外発生");
}
どなたか、対処方法をご存知でしたら教えてもらえないでしょうか。
629:Name_Not_Found
12/01/12 21:10:21.84
>624 勉強しろ
>625 実装において大きく違う
630:Name_Not_Found
12/01/12 21:18:01.45
ソースを訪ねて、返ってきた言葉が「勉強しろ」だよ…
631:Name_Not_Found
12/01/12 21:19:59.07
>>604
arguments['a'] というのは聞いたことないね
var a = 1;
console.log(a, window.a, window['a']); // 1, 1, 1
// a, window.a, window['a'] は同じグローバル変数
var b = 1;
function A(a) {
var b = 3;
console.log(a); // 2
console.log(arguments['a']); // undefined
console.log(arguments[0]); // 2
console.log(b); // 3
console.log(window.b); // 1
// a, arguments[0] と b はローカル変数 window.b はグローバル変数
// arguments['a'] は未定義の変数
}
test(2);
>>623
いま eval() で使っているコードを書いてくれないと何のアドバイスもできない
632:Name_Not_Found
12/01/12 21:21:46.21
>>623
どんなコードなのか、なぜevalを使うのか教えてくれ
じゃないとこっちもわからん
633:Name_Not_Found
12/01/12 21:27:09.14
>>622 は知ったか
634:Name_Not_Found
12/01/12 21:31:39.01
jQueryプラグインのダウンロード方法が分かりません。
ここから URLリンク(archive.plugins.jquery.com)
ここに URLリンク(github.com)
移ったのでしょうか?プラグインの探し方からさっぱり分かりません。
どなたか教えて頂けないでしょうか。よろしくお願いします。
635:Name_Not_Found
12/01/12 21:52:49.72
>633
そう思いたい気持ちは分かるよ
反論したくても知識がなくてできなくて悔しいね(笑
636:Name_Not_Found
12/01/12 21:55:48.97
>>534
ついでにわかったんで書いとくけど、
script要素を総当りしてsrc属性で照合する方法をとってましたわ
637:Name_Not_Found
12/01/12 21:57:34.79
>>631
MDN-arguments
JavaScript 1.1 および JavaScript 1.2 で利用可能だった次の機能は削除されました。:
関数の各ローカル変数は arguments オブジェクトのプロパティです。
たとえば、もし関数 myFunc が myLocalVar という名のローカル変数を持っていたなら、その変数を arguments.myLocalVar として参照できます。
638:Name_Not_Found
12/01/12 22:06:51.25
>>635
なんだ妄想だったのか。
あんまりネット上で間違った知識広めんなよ。
639:Name_Not_Found
12/01/12 22:32:48.39
>>635
最低だなw
640:Name_Not_Found
12/01/12 22:35:39.80
arguments.calleeと勘違いしてるに1票
641:Name_Not_Found
12/01/12 22:35:50.45
>>637
>たとえば、もし関数 myFunc が myLocalVar という名のローカル変数を持っていたなら、その変数を arguments.myLocalVar として参照できます。
「arguments.myLocalVar が使えるという前提」で話すけど、その arguments.myLocalVar はどこから参照したいときに使うのかな?
function myFunc() {
var myLocalVar = 1;
arguments.myLocalVar; // ここだと myLocalVar だけでいい気がする
}
function myFunc2() {
arguments.myLocalVar; // ここから myFunc の変数が使える??
}
function myFunc3() {
var myLocalVar = 2; // 別の myLocalVar を宣言して
}
function myFunc4() {
arguments.myLocalVar; // この場合だと myFunc と myFunc3 のどちらが呼ばれるのか?
}
myFunc.myLocalVar; // もしかして、こういう感じの指定なのかな?
642:Name_Not_Found
12/01/12 22:44:18.66
ちなみに >>636 も嘘。
643:Name_Not_Found
12/01/12 22:47:14.97
>>641
こうじゃん?
function myFunc() {
var myLocalVar = 1;
myFunc2(arguments);
}
function myFunc(args) {
alert(args.myLocalVar);
}
644:Name_Not_Found
12/01/12 22:50:33.72
よく考えたら >>643 も無意味。
function myFunc() {
var myLocalVar = 1;
return arguments;
}
function myFunc2(args) {
alert(args.myLocalVar);
}
var args = myFunc();
myFunc2(args);
645:Name_Not_Found
12/01/12 23:25:35.58
eval使ったらJSが本来持つ危険性より高い危険性が生まれると勘違いしてるやつ多そうだな
上の質問の奴もそんな感じだろ。eval関係ない話になってるのに気づかずに納得したっぽいな
646:Name_Not_Found
12/01/12 23:34:27.31
検索フォームに文字を入れてフォーム下ににょきにょきって感じで結果出てくるようなことってjQueryで可能でしょうか?
可能であればサンプル等あるサイト教えてください
よろしくお願いします
647:Name_Not_Found
12/01/12 23:36:02.30
jQueryUIとか
648:Name_Not_Found
12/01/12 23:51:26.86
var a1 = 1;
var a2 = 2;
var a3 = 3;
forを使って a1~a3の中身をalertする方法をおしえてくだしあ
偉い人
ルールが分からん
これじゃ出ないんですけど
for(var i=1;i<=3;i++){
alert(a.i);
}
649:Name_Not_Found
12/01/13 00:03:20.14
そこでevalの登場だ
まぁ普通なら配列かオブジェクト使えとなるけど。
for (var i = 1;i<=3;i++) {
alert(eval('(a'+i+')'));
}
//配列バージョン
var aAry = [1,2,3],
i,
l = aAry.length;
for (i = 0;i < l;i++) {
alert(aAry[i]);
}
// 配列の別バージョン
aAry.forEach(function (item) {
alert(item);
});
650:Name_Not_Found
12/01/13 00:04:53.88
evalなんていらねぇ
var a1 = "1";
var a2 = "2";
var a3 = "3";
for (var i=1; i<4; i++)
alert(window["a"+i]);
651:Name_Not_Found
12/01/13 00:12:31.58
>>650
a1~3の定義場所がglobal以外の場合はどうするの?
652:Name_Not_Found
12/01/13 00:22:41.28
>>648-651
var a1 = '1';
var a2 = '2';
var a3 = '3';
function test() {
for (var i = 0, m = arguments.length; i < m; i++) {
alert(arguments[i]);
}
}
test(a1); // "1" をアラート
test(a1, a2, a3); // "1" "2" "3" をアラート
653:Name_Not_Found
12/01/13 00:23:00.53
>>650
本来は配列を使うべきだが、この場合はeval系統の出番だな。
(function(){
var a1 = 1, a2 = 2, a3 = 3;
// hmhm...
})():
654:Name_Not_Found
12/01/13 00:32:58.69
いや、そもそも、配列使うべきだから。
実装がおかしいから。
655:Name_Not_Found
12/01/13 00:35:38.98
>>651
ぐろーばる以外?
そんな時は配列使うんじゃねーか。当たり前だろ?
656:Name_Not_Found
12/01/13 00:35:38.94
じゃあじゃあぼくはnew Functionで!
657:Name_Not_Found
12/01/13 00:38:59.64
>>654
配列いがいにないのかえ?
他の言語だったらできるんだが(・´x`・)くそやん
658:Name_Not_Found
12/01/13 00:40:42.15
>>657
配列使って実装できないお前が(`ェ´)ピャー
659:Name_Not_Found
12/01/13 00:42:47.87
お前らありがとうぴゃーヽ(`Д´)ノ
660:Name_Not_Found
12/01/13 00:43:46.83
>>652
argumentsは非推奨になったよ
661:Name_Not_Found
12/01/13 00:50:36.93
>>660
argumentsじゃなくてarguments.calleeだがな
662:610
12/01/13 00:59:12.51 2oiSMuyR
>>645
JS関係ない話になっちゃったことは理解しましたよ
サーバに接点がないのなら、どんなにズルズルな、たとえば
<textarea id="ta"></textarea>
var ta = document.getElementById("ta");
eval(ta.value);
なんてこと書いちゃったとしても
そのブラウザのなかで出来ることしかできない
て、理解であってますよね?
663:Name_Not_Found
12/01/13 01:01:55.59
ばかばっか
664:Name_Not_Found
12/01/13 01:09:14.78
>>662
あってる。ブラウザでJSができることしかできない。
665:Name_Not_Found
12/01/13 01:10:04.15
うまく説明できないけど、邪悪で悪魔でやばいんだよ!
きっと
666:Name_Not_Found
12/01/13 01:11:34.89
>>622
セキュリティーホールも知らないの?ブラウザのページ上でしか出来ないはずが、
それを通り越すことがあるんだよ。>>664みたいな意見は鵜呑みにしないほうがいい。
667:Name_Not_Found
12/01/13 01:18:59.93
>>666
どういう理屈でevalがJSができることを超えてセキュリティホールになるんだよw
evalはJSを超越しちゃうのかよwすごいなw
668:Name_Not_Found
12/01/13 01:19:33.20
> それを通り越すことがあるんだよ
だからそれを具体的に説明してみ、セッションハイジャックとか言ったらお前にeval語る資格なんてない
669:Name_Not_Found
12/01/13 01:20:35.98
>>667-668
javascript 脆弱性で調べてみたら?浅はかにも程がある。
670:Name_Not_Found
12/01/13 01:23:07.99
>>669
だからそれはJSの脆弱性だろw evalじゃねーよw
671:Name_Not_Found
12/01/13 01:27:10.13
>>670
>>662は手段はどうであれ意図しないコードを実行できる仕様にある訳でしょ。
それでもブラウザ上でしかコードは動かないから大して問題じゃないと。
その段階でevalがどうとか呆れる。というか、相手することないね。すまんよ。
672:Name_Not_Found
12/01/13 01:29:04.53
>>662
> そのブラウザのなかで出来ることしかできない
だから安全、ということにはならないけどね。
673:Name_Not_Found
12/01/13 01:32:47.48
>>671
いやいや・・>>662で意図しないコードを実行できるだって?
コードをコピペしてもらって実行してもらうことが”意図しない”なら別だが、
どうやって見知らぬ誰かに実行させるのか実に興味深い
javascript eval 脆弱性でググってとくまるさんのサイトが出たがこれはサーバーサイド側の問題。
URLリンク(d.hatena.ne.jp)
674:Name_Not_Found
12/01/13 01:35:22.02
>>673
>>662を読み直したら。
675:Name_Not_Found
12/01/13 01:36:06.13
ウェブの人は基礎が吹っ飛んでる人が多いからスレの流れがこうなるのも仕方ない。
676:Name_Not_Found
12/01/13 01:37:43.83
>>674
サーバーサイド側で、たとえば
<textarea id="ta"><?php echo($_GET["code"]) ?></textarea>
こう書かれてたら話は別だぞ?
今は
<textarea id="ta"></textarea>
これだけの話をしてる
677:Name_Not_Found
12/01/13 01:42:09.42
>>676
確かにレイヤーを分けて考えれない吹っ飛んだ人が多い
678:Name_Not_Found
12/01/13 01:42:11.19
>>676
>>662は「仮に次のような例で任意のコードを実行できるとしても、
ブラウザ内で動くだけだから大きな問題ではない」って言ってるよね。
このどこを掻い摘んで eval を利用して外部から任意のコードを埋め込むってなるわけ。
問題は任意のコードが実行されることなんだから、その段階でevalがどうとか言ってると、なんか頭おかしいみたいだよ。
値を埋め込む方法はあるけども、それは今回の質問とは関係ないよね。まったく勘違いしてるよ。
679:Name_Not_Found
12/01/13 01:42:18.69
evalを使いたいひとはevalで何がしたいのさ。それはevalにしか出来ないことなのか?
>>594,649のコードを読むと頭の弱い人なんだなと思う
680:Name_Not_Found
12/01/13 01:45:14.05
>>676
evalの是非を問うてるんじゃなくて意図しないコードが動くことについての質問だろ。
681:Name_Not_Found
12/01/13 01:47:44.84
>>678
javascript:スキームでも、コンソールでも任意のコードが実行できるし
HTMLファイル作ってコード書いたらいくらでも任意のコードが実行できますが、問題ですか?
これでも伝わらないなら読んでね。
URLリンク(d.hatena.ne.jp)
682:Name_Not_Found
12/01/13 01:50:20.35
>>681
悪いけどこれ以上は無理だわw分かってくれるよう説明したつもりなんだけどね。
683:Name_Not_Found
12/01/13 01:54:49.52
>>682
自分ははまちちゃんの考えに納得して基準に使ってるから
合わせて「セキュリティ過敏症」っていう記事も読むといいよ。
これでも、昔はeval死ねとか思ってたけど。
684:Name_Not_Found
12/01/13 01:59:00.51
すでに話はJavaScriptの脆弱性に移ってるんじゃないのか?
たいした危険性ないよね?
685:Name_Not_Found
12/01/13 02:01:03.31
移ってない
686:Name_Not_Found
12/01/13 02:06:58.39
自分のサイトがDDoS攻撃される可能性があるってことだよ
687:Name_Not_Found
12/01/13 02:09:31.77
横レス。
>>681
記事読んだけど、セキュリティについて全く認識不足だな。
688:Name_Not_Found
12/01/13 02:10:17.35
evalとか気にして縮こまるよりは面白い物作ろうよってこと
商用サイトとか作ってる上級な人はこんなとこ見てないし。え?みてる?
689:Name_Not_Found
12/01/13 02:12:55.89
気持ち悪い
>>681はどこの信者だよ
690:Name_Not_Found
12/01/13 02:13:43.08
>>688
スレチかと思われ
691:Name_Not_Found
12/01/13 02:15:11.78
>>687
初心者向けの記事だから足場は別の人がちゃんと管理してるのが前提だよ
鯖のrootもってるような人向けじゃない
692:Name_Not_Found
12/01/13 02:17:00.41
>>691
JavaScriptの話じゃないのか?
693:Name_Not_Found
12/01/13 02:22:21.81
脆弱性の話じゃなかったのか>>669
694:Name_Not_Found
12/01/13 03:02:26.14
>>641
どこからというより、
変数名そのものを値として扱えるってことじゃね。
function myFunc() {
var myLocalVar = 1;
var varName = 'myLocalVar';
arguments.[varName];
}
みたいな。
コード追いかけるの大変だろうな…
695:Name_Not_Found
12/01/13 03:10:07.41
>>693
>>110-693までのeval()の話題まとめ
>>110 :Name_Not_Found:2012/01/09(月) 16:23:50.92 ID:???
>「evalはどんな事があっても絶対に絶対に使うな」ときつく怒られたのですが
>調べて見ても何故そんなに使ってはいけないのかよくわかりませんでした
eval()を使ってはいけない理由は何かの質問がくる
>>113 :Name_Not_Found:2012/01/09(月) 16:29:31.43 ID:???
>evalを使うとXSS脆弱性が高まるから
脆弱性うんぬんの話題はここから
>>114 :Name_Not_Found:2012/01/09(月) 16:31:50.56 ID:???
>Ecmascript 5になるとstrictモードではeval使えなくなるからねー
正しくは、Strictモードだとeval()で作成した変数などはeval()内でのみ有効であり、その後の処理には反映されない制限がある。それと、これに関連する>>149と>>150のレスは嘘
>>129 :Name_Not_Found:2012/01/09(月) 16:55:59.14 ID:???
>電卓作るときとかeval使わないと厳しい
これに対して「eval()でやらなくても出来る」等のレスがつく
>>137 :Name_Not_Found:2012/01/09(月) 17:09:52.62 ID:???
>じゃあやってみろよ
>eval使わずにinput以下の計算式いれて答えさせるんだろ?
>((1+2+3)*2+19*(30*2))/2
eval()じゃないと出来ないと反発。>>138-145くらいまで出来る出来ないの話題で盛り上がる
>>147 :Name_Not_Found:2012/01/09(月) 17:14:18.01 ID:???
>evalが不要なら何でevalは実装されているの?
>何でJavascriptの仕様からevalが削除されないの?
なぜか「eval()でやらなくても出来る=eval()の実装は不要」と勘違いのレス。ここから>>147-388まで、ほぼeval()についての脆弱性か。eval()が不要か必要かの話題しかない
696:Name_Not_Found
12/01/13 03:16:13.32
>>694
>>637にも書いてあるけど、下のURL先にはこう書いてある
URLリンク(developer.mozilla.org)
>たとえば、もし関数 myFunc が myLocalVar という名のローカル変数を持っていたなら、その変数を arguments.myLocalVar として参照できます
697:Name_Not_Found
12/01/13 03:18:07.67
今になって >>142 で笑ってしまったじゃないか。
698:Name_Not_Found
12/01/13 03:28:38.99
>>696
arguments.myLocalVar
は
arguments['myLocalVar']
と同じだろ?
699:Name_Not_Found
12/01/13 07:08:17.32
>638=639
自分が納得できなければとことん人をおちょくる頭の悪い奴だな
たぶんアスペか何かだろうからもう触らんでおこう
700:604
12/01/13 07:25:37.60
>>698のように変数名の文字列から変数を特定するのを
ローカル変数でもやりたいのです
701:Name_Not_Found
12/01/13 08:51:59.86
700になりました。テンプレに関する大規模な変更の提案あれば今どうぞ。
702:610
12/01/13 08:52:16.79 2oiSMuyR
>>681
おはようございます
文章の書き方が悪かったかも知れません
>>662で「サーバに接点がないのなら」と書いたのは
サーバ側にクライアントサイドプログラムに対してのゲートウェイが用意されてないのなら
的な意味です
どれだけJSで暴れた所で、影響を及ぼせる範囲は
その実行者のコンピュータの中だけですよね?
703:Name_Not_Found
12/01/13 09:02:54.28
サーバ側に何も用意されていない→完全に静的なHTMLのみのサイトということ。
今はそういうサイトは非常に少ないんじゃないかなと。
704:Name_Not_Found
12/01/13 09:23:32.85
>>701
evalの話題禁止
705:Name_Not_Found
12/01/13 09:24:26.30
>>702
暴走したJSで別の脆弱性を付けば被害はもっと広くなる可能性はある
まあ別にそれはプログラマーが危惧しなくてもいいこと
ブラウザやその他のソフトの仕事だし気にしてもどうしようもない
ブラウザ外アプリの形のJSなら多少は責任あるかも
706:Name_Not_Found
12/01/13 09:31:36.05
>>700
どうしてそんな変な実装なの?
配列とか、ハッシュとか使って組む事できないの?
707:Name_Not_Found
12/01/13 10:04:37.15
>699
そう思いたい気持ちは分かるよ
反論したくてもソースがなくてできなくて悔しいね(笑
708:Name_Not_Found
12/01/13 10:24:55.27
>>701
テンプレにデバッガの使い方をいれろ!
709:Name_Not_Found
12/01/13 10:48:53.44
それは提案とはいわない
710:Name_Not_Found
12/01/13 11:09:19.18
>>703
フリーのレンタルサーバーなんかは全部そうじゃね?
711:Name_Not_Found
12/01/13 13:13:37.17
それでやっぱり、テンプレの「提案」は具体的なテンプレ用のレス案として出してくれないと
採用も却下も議論が難しいので、そこはよろしく。そういう検討方法以外の検討方法がいいと
いう方いらしたら、とりまとめに出てきていただけるとうれしいですけどね。
712:Name_Not_Found
12/01/13 15:34:18.33
デバッガ以前にエラーメッセージも見てなさそうな質問があるから
各ブラウザのエラーの確認方法書いといて。
713:Name_Not_Found
12/01/13 15:46:40.82
>>712
だからテンプレ文案にしてくれないと検討できないって。まずは各ってどのブラウザとどの
ブラウザよ。どれくらいどういうふうに書けばいいの? 昔のテンプレにはMozillaのエラー
コンソールの出し方載ってた時期があった気がするけど、なんで無くしたんだっけね?
714:Name_Not_Found
12/01/13 15:49:54.96
>>1 の【エラーメッセージ】のとこを次のように差し替えるくらいでどお。
【エラーメッセージ】ブラウザのエラーは必ず確認し、有無および有ならメッセージ内容を書く。
715:Name_Not_Found
12/01/13 15:52:27.60
関連スレに↓を入れてここを本スレとして乗っ取ってしまうかどうかの議論を
eval論争とかは別のところでやりたいよねってことで
JavaScriptスレ
スレリンク(tech板)
716:Name_Not_Found
12/01/13 16:18:30.00
それいいなあ。「eval論争のような言語自体の思想に関わる話題はJavaScriptスレへ」とか。
EcmaScriptスレとかもあるんだけどどうするかね。
717:Name_Not_Found
12/01/13 16:31:52.32
eval議論禁止というより議論の仕方な気がするなあ
煽り禁止とか
718:Name_Not_Found
12/01/13 16:39:49.80
>>715
そこは今のところ要らない気がするな
質問→スレ違いの話題ばかりでスレの存在意義がまともに確立できてない
スレを立てた人は確か「ここよりも気軽にJavaScriptの話題が出来る場所が欲しい」だったと思うけど、
今は多分ここにいるんじゃないかな
719:Name_Not_Found
12/01/13 16:47:22.93
とりあえず、>>5,20だけまとめた。
URLリンク(codepad.org)
720:Name_Not_Found
12/01/13 16:50:13.63
>>1のテンプレが全く使われてない。
回答者が「テンプレつけてね」と指摘しないならなくしてもいいんじゃないかと思う。
残すなら守って貰う何かが必要かな。良い文案はまだ思いつかないけど…。
721:Name_Not_Found
12/01/13 16:51:26.60
>>719
だからこのJScriptは別物だと何度言ったら
URLリンク(msdn.microsoft.com)
722:Name_Not_Found
12/01/13 16:58:45.51
>>721
すまん。結論としては URLリンク(msdn.microsoft.com) だけ残せばOK?
723:Name_Not_Found
12/01/13 17:01:59.51
█
724:Name_Not_Found
12/01/13 17:09:16.77
>>717
そうだねえ
煽りレスもそうだし、それに脊椎反射しちゃうのもかな
明らかに理不尽なレスなのは、見てる諸兄もわかってることだから
あまり熱くならんでスルーしてくれれば、と思う
725:Name_Not_Found
12/01/13 17:24:02.65
>>724
元々、ここはそういうレスが少ない方だったんだけど冬休み頃から人が増えて荒れた感があるね
新参者にもわかりやすいルールがあるといいのかな
例えば、URLリンク(d.hatena.ne.jp) は大変良くできてると思う
(現実の議論に即したルールだからこのスレに適用するためには修正が必要だけど)
726:Name_Not_Found
12/01/13 18:20:09.55
>>722
うん。
IE8までとIE9でエンジン変わったらしいんで分けた方がええ気もするけど
MSDNは全然整理されてないし
そもそもそのリンク誰も見てないようだしどうでもええな。
727:Name_Not_Found
12/01/13 18:59:03.31
ノード名を変えるにはどうしたらよいのでしょうか
nodeName="a"でいいと思っていたらnodeNameはreadonlyだし。
ノード名以外の、スタイルシートとかzindexとかはそのままにしたいので
新しくノードを作って差し替え って事はちょっとしたくないです。
728:Name_Not_Found
12/01/13 19:03:27.15
ES.nextのProxyでreadonly外す
729:Name_Not_Found
12/01/13 19:14:18.23
>>722
URLリンク(msdn.microsoft.com)
ここは?
730:Name_Not_Found
12/01/13 19:15:26.93
>>727
nodeName だけ変えて実体が変わらない状態で大丈夫?
結局、作り直して属性を移植する方が問題が少ない気がする。
731:Name_Not_Found
12/01/13 19:17:35.58
<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" /><title>014javascript</title>
<script type="text/javascript">
function calc()
{var t1=document.getElementById("t1");
var t2=document.getElementById("t2");
var t3=document.getElementById("t3");
t3.value=eval(t1.value)+eval(t2.value);}
</script></head><body><form>
<input id="t1" type="text" size="8">+
<input id="t2" type="text" size="8">
<input type="button" value="=" onClick="calc()">
<input id="t3" type="text" size="8">
</form></body></html>
javascript The GoodPartsに載っていましたが、eval()は使うべきでないならこのソースの場合どのように書きなおすのですか?
732:Name_Not_Found
12/01/13 19:21:20.18
>>731
>>368
733:Name_Not_Found
12/01/13 19:21:38.70
>>731
参照するから Good Parts のページ数および節の名前も書いて欲しい
734:Name_Not_Found
12/01/13 19:23:00.48
>>731
この場合は Number() がベターかな
735:Name_Not_Found
12/01/13 19:28:47.67
>>731
>javascript The GoodPartsに載っていましたが
マジですか?
736:Name_Not_Found
12/01/13 19:38:12.84
>>731
過去にまったく同じ質問してるな。
good partsに関する質問を淡々と繰り返し
回答に全然反応しないのが前にいた気がするが帰ってきたのか
737:Name_Not_Found
12/01/13 19:43:44.12
>>731
eval使ってる理由が分からん
昔は使わないとできなかったのかな?
738:Name_Not_Found
12/01/13 19:50:10.90
>>736
良く覚えてるなー。
コピペ荒らしじゃないか。
739:Name_Not_Found
12/01/13 19:53:41.55
>>731は URLリンク(takaku-web.com) を改変したコードじゃないかな
740:Name_Not_Found
12/01/13 20:02:06.36
vol.84 の >>755
文面も全く同じ。
741:Name_Not_Found
12/01/13 20:07:30.81
t3.value = eval(t1.value) + eval(t2.value);
↓
t3.value = (t1.value - 0) + (t2.value - 0);
これでいいんじゃね?
742:Name_Not_Found
12/01/13 20:19:11.68
+ JavaScript の質問用スレッド vol.84 +
URLリンク(logsoku.com)
743:Name_Not_Found
12/01/13 21:13:18.09
$(function(){
$('.box').hide();
$('.hover a').hover(function(){
$('.box:not(:animated)').slideDown(200);
},function(){
$('.box').animate(
{ height:0,opacity:0 },
{duration:300,complete:function(){$(this).hide();}}
);
});
});
出すときはそのままslideDownのみでいいんですが、
しまう時にフェードアウトしながらスライドアップするにはどうしたらいいんでしょうか?
上記のコードでやると一回キリになってしまうようでcomplete入れてもダメでした。
744:Name_Not_Found
12/01/13 22:10:49.26
毎度お馴染みになのが、書店でJavaって書いたとこに
Javascriptの本が置かれているな。
一般のクレームなんて無いに等しいだろう。
書店に来る人と店員の中でJavaとJavascriptの違いを知ってる人
なんて殆どいないのではないから問題にならんのだろうな。
みささんは、クレーム付けますか?
745:Name_Not_Found
12/01/13 22:12:31.04
>>744
たかが本屋で文句言ったところで。
746:Name_Not_Found
12/01/13 22:13:31.90
わたし本名みさだけどつけるかな。「これここじゃないよ」って
747:Name_Not_Found
12/01/13 22:18:12.52
amazonでも間違ってたりするから困るw
748:Name_Not_Found
12/01/13 22:27:41.59
JavaとJavascriptはメロンパンとメロンくらい違う。
まぁ、両方食い物(プログラミング言語)だけどなwww
JavaとJavascriptは全然文法が違う。
>>747
マジかよ。
749:Name_Not_Found
12/01/13 23:14:17.26
>>744
クレームするのはケツの穴が小さすぎると思う
書籍になるすべてのジャンルに精通することなんて無理じゃん
そこは、僭越ながら助言差し上げるのが良いのではないか
似た名前だけど別物なのでこっちに置いた方がより良いですよ、と
750:Name_Not_Found
12/01/13 23:17:45.42
そんなの黙って移動しておいてあげりゃいいじゃん。
751:Name_Not_Found
12/01/14 00:15:26.65
>>750
スレ違い気味ですが、勝手に移動したら店員が管理できなくて困るでしょう。
一言いって店員に任せるべきだと思いますよ。
752:Name_Not_Found
12/01/14 00:24:31.93
指摘とクレームは別物だと思うんだ。
指摘とクレーム一緒に表記してる所多いけどね。
753:Name_Not_Found
12/01/14 00:30:57.52 8upPqwzh
<form id="p" name="form">
名前:<input type="textbox" name="nn"/><br/>
年齢:<input type="textbox" name="age"/><br/>
</form>
でvar json1 ='{"name":document.form.nn.value}';
とするのはJSONのですか?
jQueryのライブラリで適当にイジッてるのですが、
document.form.nn.valueの値をこれでphpで取得できて動いてます。
754:Name_Not_Found
12/01/14 00:38:38.57
var json1 ='{"name":'+document.form.nn.value+'}';
これの間違い?
まぁこれでもJSONだけど
var obj = {'name':document.form.nn.value}; // JSONにするobject作成
JSON.stringfy(obj); // JSON化
とした方がより良いかもね
755:Name_Not_Found
12/01/14 00:46:37.08
とある<div>にドロップされたローカルファイルを別の<input type="file">に入力されたことにできますか?ChromeかFirefoxで
756:Name_Not_Found
12/01/14 01:04:31.86
>>755
それ、JavaScriptじゃなく、HTML5でできる
757:Name_Not_Found
12/01/14 01:04:45.37
FileオブジェクトもFileListオブジェクトもどちらもread only
758:Name_Not_Found
12/01/14 01:24:47.07
>>754
いいえ
var json1 ='{"name":'+document.form.nn.value+'}';
でなくvar json1 ='{"name":document.form.nn.value}'; です。
JSONの{プロパティ名:プロパティ値}で
プロパティ値に変数って使っていいのでしょうか?
その辺がよく分かりません。
759:Name_Not_Found
12/01/14 01:30:49.04
>>758
プロパティ値に何らかの値を使うのはOKだけど
その書き方だとプロパティの値入んないでしょ
760:Name_Not_Found
12/01/14 01:40:46.64
PHP 使いにも、いい加減なの多いな。
そもそも言語自体にバグや脆弱性が多いけど。
761:Name_Not_Found
12/01/14 01:49:08.09
>>759
全く問題なく動いてます。
762:Name_Not_Found
12/01/14 01:50:58.71
Ajaxでテキストを読み込むとき、ファイルが更新されてても更新されない場合があるので
url: 'fuge.txt?hoge='+Math.random(),
とやっているのですが、これってもしかしてそのページで何回も取得する時メモリヤバイ事になりますか?
763:Name_Not_Found
12/01/14 02:34:03.45
>>758
PHPでどのようなパーサを使っているのか知りませんが、不正なJSONですね。
JSON.parse('{"name":document.form.nn.value}'); // SyntaxError: Unexpected token d
764:Name_Not_Found
12/01/14 02:47:54.56
>>762
IEなら一時ファイル保存してるフォルダを覗いてみ
大量に貯まっていくから
765:762
12/01/14 02:55:46.63
ヒイイイィ
何か対処法は無いのでしょうか?
url: 'fuge.txt'だけだと、1.01読み込んだ後このtxtが更新されてver1.01から1.02になっても
ver1.01のままなんですよね。出来るだけリアルタイムで反映させるために>>762みたいな方法にした訳なのですが
766:Name_Not_Found
12/01/14 03:00:01.40
IEの仕様がおかしい。
本当IE死ねばいいのに。
767:Name_Not_Found
12/01/14 03:07:17.00
リアルタイムって高頻度に例えば1秒間隔にfuge.txtが更新されるとかなの?
1日一回くらいならRandomじゃなくて現在時刻でもつればええやん
768:Name_Not_Found
12/01/14 03:19:27.96
>>762
// 現在時刻を数値で取得して1時間分で割る、getTimeはミリ秒単位なので1000 * 60 * 60 で1時間。toFixedで文字にする
'fuge.txt?' + (new Date().getTime() / 3600000).toFixed()
これで1時間毎に見てくれる
769:Name_Not_Found
12/01/14 03:30:11.48
>>758
jQueryではブラウザ自身がJSONのパースをサポートしていないと
(new Function("return " + json1))() みたいな感じでパースされる。
これはエラーにはならないので、このオブジェクトを再びJSONの文字列にして
PHP側に送ればうまくいっているように見える。
でも、>>763 のようにJSONのパースがサポートされているような場合はエラーになるから
そういうのはやらないほうがいい。
やるなら >>754 かな。前者のは
var json1 ='{"name": "'+document.form.nn.value+'"}';
のように値をダブルクォーテーションでくるむほうがいいと思うけれど。
770:758
12/01/14 03:43:21.16
jQueryのライブラリを使用して
jsでdata:{name:'John', id:'id',age:'987'},
と書いたものを、phpで
$msg .="age:".$_POST['age'];のように受け取ってました。
コレを改造して、
data:{"name":document.form.name.value},を
$msg .="age:".$_POST['name'];のようにしたら動きました。
このライブラリは200行ほどあって、オレのレベルじゃ
さっぱり分からんッス。
771:Name_Not_Found
12/01/14 04:24:07.28
下のコードをChromeのコンソールから何回か実行すると
いつまでたってもwsがGCされなくてメモリリークが起きているみたいです。
wsは一見どこからも参照されてないように見えるのですがどういう理由でGCされないのか知ってる方がいれば教えてください。
(function(){ var ws = new WebSocket("ws://localhost:3000/"); ws=null; })();
772:Name_Not_Found
12/01/14 06:41:15.42
何を根拠にリークが起きてると言ってるんだ?
スコープから抜けたり、null を代入したからといって即時実行されるわけじゃないだろ。
773:Name_Not_Found
12/01/14 07:30:27.25
「Javascript」なんて書くような奴も
所詮Javaとの区別がつかない奴と同レベルw
774:Name_Not_Found
12/01/14 07:43:18.92
変なこだわりがあるんだな。
775:Name_Not_Found
12/01/14 12:21:20.00
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
prototypeオブジェクトにメソッドを追加するメソッドですがこのreturn thisはどういう意味があるんでしょうか?
776:Name_Not_Found
12/01/14 12:55:44.83
methodを実行したオブジェクトを返します
どういう意味があるのかはこれだけではわかりません
というかthis.prototypeとか何か間違ってませんか
誰が書いたんですか
777:Name_Not_Found
12/01/14 12:56:21.22
呼び出し元の関数オブジェクトが戻り値なるのを意図してるんだろう。
var F = function () {};
var f = new (F.method('hoge', function () { alert('hoge'); }));
f.hoge();
呼び出し元が返るなら、こんな感じに書くこともできる。
778:Name_Not_Found
12/01/14 13:24:55.20
あ、Functionオブジェクトだからthis.prototypeでいいのか
すみません別に間違ってませんねごめんなさい
779:Name_Not_Found
12/01/14 13:50:12.61
>>776
本に書いてあったヤツです…
>>777
スゴイ
ありがとうございます。
780:Name_Not_Found
12/01/14 16:37:42.59
jQueryのバージョンごとに処理を変えたいのですが、バージョンの判定って出来ますか?
781:Name_Not_Found
12/01/14 16:56:14.18
JavaScriptにおけるコンテキストって具体的にどういうものの事ですか?
782:Name_Not_Found
12/01/14 16:58:57.95
>>780
jQuery.fn.jquery
jQuery.prototype.jquery
簡単に書き換えできるけど、バージョンが文字列で返ってくる。
783:Name_Not_Found
12/01/14 17:23:46.80
>>781
・グローバルコード
・eval コード
・関数コード
単に「コンテキスト」ってことだけだと、これらが相当するか微妙だし
これで「分かった」なんてことにもならないだろうけど、とりあえず。
「コンテキスト」がどこで使われてるか、事例を示すといい。
784:Name_Not_Found
12/01/14 17:28:17.60
技術ブログでたまにみる下記の書き方は何の意味があるのですか?
(function a(){})();
785:784
12/01/14 17:35:26.68
追加で以下の書き方の意味も教えてください
これも技術ブログで書かれていたのですが
a(b functionContext) = {
s1: "test1",
s2: "test2",
s3: "test3"
};
括弧の中のb functionContextというのは何を意味するのですか?
786:Name_Not_Found
12/01/14 17:45:23.42
>>775
単にメソッドチェーンできるようにでは
Array
.method('first', function () {return this[0];})
.method('last', function () {return this[this.length - 1];});
[1, 2, 3].first() === 1 && [1, 2, 3].last() === 3;
>>784 即時関数で検索
>>785 関数呼び出しは左辺にはなり得ないし、Identifierを2つ並べることもできないよ
787:Name_Not_Found
12/01/14 17:45:33.05
>>784
即時関数でぐぐってください。
>>785
SyntaxError になると思うのですが…。URLを教えてください。
788:784
12/01/14 17:50:32.37
ありがとうございます
即時関数で検索して勉強になりました
785についてはここです
URLリンク(alpha.mixi.co.jp)
789:Name_Not_Found
12/01/14 17:56:44.21
>>783
全ての関数は、生成される際に隠されたプロパティを持つようになっている。
それは、その関数の振る舞いを決めるためのコンテキストとコードである。
こういう説明文でした。
790:Name_Not_Found
12/01/14 17:56:51.16
>>788
それは説明用の擬似コード
コンテキストについてはまさしくその記事に書いてある
791:784
12/01/14 18:03:17.76
そうでしたか勘違いしてました
それにしてもthisで挫折しました
thisの項目は難しいのでそれ以外を読んで勉強します
792:Name_Not_Found
12/01/14 19:06:03.70
tes
793:Name_Not_Found
12/01/14 19:06:37.66
jQueryのanimate動作が完了した10秒後の処理をしたいのですが
それってやっぱり
animate({},function(
setTimeout(,10*1000)
))
しか方法はないのでしょうか?
使っているバージョンは1.71です
794:781
12/01/14 19:27:29.67
>>782
ありがとうございます
レスが遅くなってすみませんでした
795:780
12/01/14 19:28:35.00
間違えましたx 781 o 780です
796:Name_Not_Found
12/01/14 19:44:33.16
JavaScript書き方ありすぎて困るのですが
書き方って使い分けるものなのでしょうか?
例えば
function Hoge(){}
と
var Hoge = function(){}
みたいのとかです
あとオブジェクト指向でも中身が書き方変わりますよね?
function Hoge(){
return {
foo: 1,
bar: function(){ alert(this.foo); }
}
}
function Hoge(){
this.foo = 1;
this.bar = function(){ alert(this.foo); }
}
function Hoge(){}
Hoge.prototype.foo = 1;
Hoge.prototype.bar = function(){ alert(this.foo); };
いずれも
var hoge = new Hoge();
hoge.bar();
で呼び出せますが、統一した書き方するにはやはりフレームワーク使って規則にしばられたほうがいいでしょうか?
797:Name_Not_Found
12/01/14 19:44:45.70
dankogaiさんがES5に移行したので僕もES5で開発していきたいと思います
IE8以下の人すみません
798:Name_Not_Found
12/01/14 20:00:00.21
Good Partsの164ページに載ってるJSONパーサって何?
何に使うのですか?
799:Name_Not_Found
12/01/14 20:04:51.94
JSONパーサはJSONパーサだろ
何がわからないのかわからないが
JSONに無縁な人なら気にしなくていいのではないか
そのうち使うだろう
800:Name_Not_Found
12/01/14 21:10:20.28
>>799
var jf='{"name":"綾小路"}';
var employee = JSON.parse(jf);
をP162のvar employee=json_parse(jf)のように使うのですか?
JSON.parse()とは違うってことですか?
801:Name_Not_Found
12/01/14 21:30:20.99
>>800
昔からJSON.parseがあったわけではないからね。
802:Name_Not_Found
12/01/14 22:31:49.51
>>800
例えばAPIでjsonを取得してくるとするじゃん
でも取得してきたものはただの文字列なんだよ
だからパースするの
jsonpならパースされてるからいいんだけど
803:Name_Not_Found
12/01/15 00:15:24.58
流れてしまったので>>793もし解る方いたらよろしくおねがいします
804:Name_Not_Found
12/01/15 00:32:49.65
1.71
1.71
1.71
1.71
1.71
1.71
1.71
1.71
1.71
1.71
805:Name_Not_Found
12/01/15 01:03:28.98
>>803
その方法のどういうところが不満か書かないと。
ループで10秒待つような回答が来ても困るわけだろ?
806:Name_Not_Found
12/01/15 01:50:23.65
10レス程度で流れたって
807:Name_Not_Found
12/01/15 01:58:44.09
即レスじゃないとダメなんです!
2レス後じゃダメなんです!!!
808:Name_Not_Found
12/01/15 08:50:07.35 gvRNTvm5
【環境】OS:win7,ブラウザ:Opera(var11.60)
【サンプルコード】
var obj = document.getElementById("object"); ←javascript部分
while(obj.firstChild){
obj.removeChild(obj.firstChild);
}
--------------------------------------------------
<div id="object"><p>test</p></div> ←HTML部分
【エラーメッセージ】"test"が消えない
【期待する結果】"test"が消える
809:Name_Not_Found
12/01/15 09:18:44.16
>>808
自分も似たような環境だけど、そのコードでちゃんと消えてるな
URLリンク(cache.gyazo.com)
810:Name_Not_Found
12/01/15 11:28:13.23
Operaとかうちでは対応しませんよ
811:Name_Not_Found
12/01/15 11:48:23.48
IE9とかうちでは対応しませんよ
812:808
12/01/15 13:18:44.99
IE9とchrome(var16)で試してみたけどできないお(´・ω・`)
813:Name_Not_Found
12/01/15 13:21:57.25
過去にまったく同じようなコード書いて普通にIE6,7,8,9,Fx3,Chromeで動いてた記憶がある
814:Name_Not_Found
12/01/15 13:37:43.25
>>812
URLリンク(jsfiddle.net)
815:Name_Not_Found
12/01/15 13:38:49.07
>>812
コンソールにエラーが表示されてないか
最小限のコードで試してるか
816:Name_Not_Found
12/01/15 13:39:47.38
Eclipse以外の開発ソフトでいいのってある?
817:808
12/01/15 14:07:36.60
>>814のサイトでやってみたらできました
なぜブラウザだと動かん……
URLリンク(uploader.sakura.ne.jp)
818:Name_Not_Found
12/01/15 14:30:25.93
firebugとかでステップ実行してみたら
819:Name_Not_Found
12/01/15 14:39:48.18
狐は最近デバッグツールついたよね
820:Name_Not_Found
12/01/15 15:09:55.39
>>818
やってみる
821:Name_Not_Found
12/01/15 15:12:59.20
chromeでステップ実行の方法を教えてください
例えば
alert(1);
alert(2);←ここで止めたい
alert(3);
822:Name_Not_Found
12/01/15 15:27:51.02
Scriptsで行番号クリックするだけ