+ JavaScript の質問用スレッド vol.95 +
1 :
Name_Not_Found :
2012/01/09(月) 09:29:03.54 ID:iTyHr/4n JavaScript を自ら学ぶ人のための質問スレッドです。
>>2-4 のテンプレを読んだ上で質問してください。
■質問を書く上で
(1) 質問にならない投稿はご遠慮ください。(煽り、コード制作依頼など)
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
(ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 長い間連続して質問する場合にレス番を名前にしてあれば、質問の流れが回答者に伝わりやすくなります。
(4) 常に自発的に調べる心構えを持ってください。
具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
※必ず「問題の事象が再現されること」を確認してください。
必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は
http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。質問テンプレートを活用してみてください。
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。(ex: IE8, Firefox4)
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。(Windows なら「コピット」を活用)
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
1レスに収まらないならコード投稿サイトを利用してください。
http://jsdo.it/ http://jsbin.com/ http://jsfiddle.net/ http://ideone.com/
■主要FAQ (全部は
http://fiddle.jshell.net/vSqKr/30/show/ )
Q1. 別窓・フレーム内容やローカルファイルを読み書きしたいのですが…
A1. 別サーバのページやファイルの内容はセキュリティ制約でアクセス不可です。
Q2. document.write()でページ内容を追加したいのですが…
A2. 一度表示完了後にwriteするとページ内容が消去されます。DOM等別手段を。
Q3. table内容のinnerHTMLやDOMでの変更がうまく行かないのですが…
A3. IEではtable/tbody/trのinnerHTML書き換え不可です。DOMを使いますが、
DOMの場合tableの直下にはtbody要素が(作らなくても)あることに注意。
Q4. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A4. 「document.forms.myform.elements[変数名].value」でどぞ。
JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
グローバル変数はwindowのプロパティなので「x」と「window['x']」も。
Q5. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A5. 取得には document.defaultView.getComputedStyle() を使う必要あり。
IEでは要素オブジェクトのプロパティcurrentStyleを使う。
Q6. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A6. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
Q7. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
「"...this..."」とか「function(){...this...}」ではうまく行きません。
A7. 実行時にthisが別のものを指してしまってる。以下のようにthisを束縛保存。
「function(x){return function(){...x...};}(this)」
Q8. input type="file"の値を設定(参照)できないのですが…
A8. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
Q9. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A9. コード実行時点でHTMLがそこまで読まれてない。window.onload 中でやるとか。
おつかれ。ときに前スレ、関連スレは無しになったの?
jQueryの1.6移行に対応したリファレンスサイトが見つからないんですが 知ってる方いましたら良かったら教えて下さい。
公式ドキュメントでいいんでないの 英語がわからなくてもサンプルコードだけでなんとなくわかる
前スレ
>>997 言ってる症状が再現しない・・・
こちらの環境は、Ubuntu11.10 64bit
Chrome バージョン 16.0.912.75
FireFox バージョン 9.01
>>7 公式ドキュメントのことすっかり忘れてましたorz
ありがとうございます。
>>8 この質問だろ?
>997 :Name_Not_Found:2012/01/09(月) 08:56:32.12 ID:WCvX0dGt
>実際に現象が見せられなくてあれなんですが
>
http://jsfiddle.net/maeSZ/1/ >このコードを私のwebサーバで動かすと挙動がおかしくなります。
>
>具体的には、 chrome最新版で見て
>リンクからここに飛んだとき、数字の表示が中央ではなく
>左上の座標0,0を中心として表示されることがある
>1度目のアクセスは正常で、2度目からズレる
>そのページでF5すれば位置のズレがなおる
>再びリンクからアクセスすると1度目は正常で2度目からズレる、のパターン
>firefoxで確かめてみたところ、この現象は発生しませんでした。
>ブラウザ側のOSはubuntu11.04 64bitです
>
>これはどこの問題でしょうか?
>またどのようにすれば常に正しい位置に表示されますか?よろしくお願いします。
位置がズレるのはJavaScriptじゃなくてCSSの問題の気もするがな
ここ見てもらうとわかるが、ズレは再現できないな
http://browsershots.org/http%3A%2F%2Fjsfiddle.net%2FmaeSZ%2F1%2Fshow%2F
11 :
mae 997 :2012/01/09(月) 10:40:30.77 ID:WCvX0dGt
>>8 ,10
ふむむ再現できないとしたら私のローカルの問題ですかねえ
デバッガの使い方ぐらいテンプレいれとけや
前スレの~~()とかa/b%|0が分かりません 検索エンジンでは記号で検索ができないので解説お願いします
すみません。jQueryスクリプトのことで聞かせてください。 $(function(){ $('img').mouseover(function(){ $(this).css("opacity","0.8"); }); $('img').mouseout(function(){ $(this).css("opacity","1"); }); }); とりあえずオンマウスでimg要素をゆっくり透明にしたいんですけど、この場合どうすればいいんでしょうか? fadeOut、In、Toggleでは挙動がちょっと違うようなので…
15 :
14 :2012/01/09(月) 11:02:15.38 ID:???
すみません。 animateで自己解決しました。
16 :
Name_Not_Found :2012/01/09(月) 11:29:42.43 ID:XwxD68HW
ttp://www.html5.jp/library/progress.htmlを参考にしてループ処理している間に プログレスバーを表示しようともくろんでいます。
しかし,描画がループ終了後にされるだけで、バーが徐々に伸びていくようになりません。
アドバイスをお願いします。htmlとjavascriptはこうです。safariとfirefoxで試しました。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
<html xmlns="
http://www.w3.org/1999/xhtml " xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<title>HTML5.JP</title>
<script type="text/javascript" src="../html5jp/progress.js"></script>
<script type="text/javascript">
(function () {
window.onload = function() {
var o = new html5jp.progress("sample", p);
o.draw();
document.getElementById("incr").onclick = function() {
for(var i=0;i<=100;i++){
o.incr(1);
for(j=0;j<=5000000;j++){}
};
};
};
})();
</script></head><body>
<h1>PROGRESS BAR</h1>
<div id="sample"></div>
<button id="incr">start</button>
</body></html>
javascriptでstyleを切り替えたいんですがプロパティの書き方あるじゃないですか cssではmargin-leftって書くけどjavascriptではmarginLeftみたいな あれってw3cとか公式なサイトでどこを見たら乗ってますか?
/ // / // ______ / // / / // /| r'7\ ,.ヘ‐'"´iヾ、/\ニ''ー- 、., / / / / | |::|ァ'⌒',ヽ:::ヽrヘ_,,.!-‐-'、二7-ァ'´|、__ `'ー-‐''" ヽ、_'´ `| |:::::|'" 二.,_> ,.へ_ / //__// / / / `ヽ7::/ か っ も | / // メ,/_,,. /./ /| i Y // ァ て う. |'´/ ∠. -‐'ァ'"´'`iヽ.// メ、,_ハ , |〉 | 約 ク ヽ! O .|/。〈ハ、 rリ '´ ,ァ=;、`| ,ハ |、 / | 束 ソ > o ゜,,´ ̄ . ト i 〉.レ'i iヽ|ヽ、.,____ | し ス / ハ | u ,.--- 、 `' ゜o O/、.,___,,..-‐'"´ | た レ | / ハ, / 〉 "从 ヽ! / | じ は |,.イ,.!-‐'-'、,ヘ. !、_ _,/ ,.イヘ. ` ヽ. ッ .ゃ .立 |/ ヽ!7>rァ''7´| / ', 〉`ヽ〉 ! ! な て .', `Y_,/、レ'ヘ/レ' レ' い .な ヽ、_ !:::::ハiヽ. // / で い ./‐r'、.,_,.イ\/_」ヽ ', / / す / `/:::::::/ /,」:::iン、 / / 〈 ,,..-‐''"´ ̄ ̄77ー--、_\.,__ / ,.:'⌒ヽ ´ | | , i |ノ `ヾr-、
<div id="test">test</div> こういうhtmlがあって var test = document.getElementById('test'); みたいにid名と変数が同じになると一部ブラウザで正常な動作をしないとかどこかのサイトで読んだ覚えがあるのですが本当ですか? サイトをブックマークし忘れたのでどこのサイトか覚えてません
>>13 難しく考えなくていい。前スレのそれは、どちらも演算前処理の整数値変換に意味がある。
前者は2つ並べて元に戻す。後者は0でなければ左の値が返ることを利用してる。
本質的なところは「ビット演算」で検索。
>>23 IEの実装では
<div id=test>はwindow.testにも登録される
name属性も登録されたような
>>25 ということは
window.testに上書きされちゃいますね
ってことでtest1みたいにかぶらない変数名にしたほうがいいってことでFAということですか
PHPで for($i="a";$i<="z";$i++) echo $i,"\n"; って書くとアルファベットを出力するんですが JavaScriptにもこういうトリッキーなコードあったら教えてください
var i = 'a'.charCodeAt(0); var n = 'z'.charCodeAt(0); for (; i <= n; i++) alert(String.fromCharCode(i));
var a = { a:"sample", b:function(i){return i*10;} } と var a.prototype = { a:"sample", b:function(i){return i*10;} } は どっちがよく使われますか?
>>25 IEじゃなくてDOM標準ルール
>>29 それらは全く異なるもの
どちらを多く使うもクソもない
>>29 >var a.prototype = {};
これは使われることはないよ
>>30 Firefoxでならないんだけど仕様のどこに書いてあるの
>>33 構文エラーでは無いぞ。
ただnewされないからprototypeが生きないというだけ。
>>24 ビット演算、なるほど全く触れてないから分からないわけだ
ありがとう
>>24 ちと訂正しとく。
「後者は右に0を置くことで左の値がそのまま返ることを利用してる」
>>32 HTML4.01の仕様をうろ覚えしてて勘違いしてた
別に明確な規格は多分なかった
>和訳
>スクリプトからHTMLの要素を参照する
>各スクリプト言語には、スクリプト内からHTML文書オブジェクトを参照するための規約が存在する。
>本仕様は、HTML文書オブジェクトを参照するための標準機構を定義するものではない。
>しかしながら、スクリプトから要素への参照は、要素名に従わねばならない。
>スクリプトエンジンは、要素を識別する際に次の優先基準に従う必要がある。
>まず、name属性とid属性の双方が設定されている場合はname属性が優先する。
>次に、どちらか一方の場合は、ある方を用いる。
つまりビット演算にかけるとまず初めに必ず切り捨て整数化されてから演算されるわけよ |はまあ+みたいなもんよ ~~は反転の反転で元通りってわけ
質問します。 自分の名前を色を000000から999999まで変えながら10回表示せよ。(for文使え。) これの解き方がわかりません。どうか教えてください。
var str = 1; alert(str); var str; alert(str); 三行目で変数が初期化されず、4行目で1を表示するのは何故ですか?
42 :
Name_Not_Found :2012/01/09(月) 14:34:20.40 ID:XNdh3zt4
安藤優子、木村太郎は、某プロパイダの社外取締役、かつ、安藤は、フジ社外の人間にもかかわらず、フジテレビジョンのM&Aの最中、フジのホワイトナ イトの【親会社】の本業を無視して、「インターネットは虚業だ。具体性がない 。」というようなことをコメントしました。この虚業は、livedoorを指していた としても、「同業者」であったということは、非常に、違和感を感じずには、い られません。
>>39 var elem = document.createElement("p");
elem.appendChild(document.createTextNode("名前"));
+function foo(n) {
var code = "#";
for (var i = 0; i < 6; i++) { code += n; }
document.body.appendChild(elem.cloneNode(true)).style.color = code;
return foo;
}(0)(1)(2)(3)(4)(5)(6)(7)(8)(9);
>>41 変数宣言はコードを処理していく前にundefined値で初期化される。
文脈を辿る時、vaは無いものとして考えればいい。
a = "あ"; ↑をカタカナに変換したいんですが標準のメソッドでできないのでしょうか? ぐぐってもやり方がバラバラなのしかないんですがスタンダードな書きかたってないのでしょうか?
>>43 1000回表示したいときどうするんだよ
>>45 基本文字コードずらせばOK
そんくらいのメソッド自分で作れ
JavaScriptの楽しさがようやくわかってきた。抜け出せなくなりそうや
アホもうはしゃべんなw
何て?w
jQueryでデザイン始めたり、HTML5とか楽しいもんねー
52 :
44 :2012/01/09(月) 14:46:33.55 ID:???
○undefined値で初期化される ◎デフォルト値で初期化される
奇蹟のカーニバル 開 幕 だ n: ___ n: || / __ \ .|| || | |(゚) (゚)| | || f「| |^ト ヽ  ̄ ̄ ̄ / 「| |^|`| |: :: ! ]  ̄□ ̄ | ! : ::] ヽ ,イ / ̄ ̄ハ ̄ ̄\ ヽ イ
人人 (iii) (iii) < ウ > 人人 // \\ < オ > < イ >// / ̄\ \ \ < オ > < ェ >\\ |(゚) (゚) |/ / < オ > < ス > \\|. ∩..| / < オ > < ! >. \\∪// < オ > < イ > (  ̄ ) YYY < .ェ > .. | | < .ェ > .. | | < ス > .. | | YYY / /\ \ / / \ \ 人人 人人 < ウ > /~~T~~\ <ウ .> < オ > / / ̄\ \ <オ .> < .ォ > | /|(゚) (゚) |\|< ッ > < オ > //|. ∩ |\\ YYY < オ >. \\\∪/// < ォ > |\\ //| < オ > | (iii) (iii) | YYY || || ..(__) (__)
__,,:::========:::,,__ ...‐''゙ . ` ´ ´、 ゝ ''‐... ..‐´ ゙ `‐.. / \ .................;;;;;;;;;;;;;;;;;;;;;;::´ ヽ.:;;;;;;;;;;;;;;;;;;;;;;................. .......;;;;;;;;;;゙゙゙゙゙゙゙゙゙゙゙゙゙ .' ヽ ゙゙゙゙゙゙゙゙゙゙゙゙゙;;;;;;;;;;...... ;;;;;;゙゙゙゙゙ / ゙: ゙゙゙゙゙;;;;;; ゙゙゙゙゙;;;;;;;;............ ;゙ ゙; .............;;;;;;;;゙゙゙゙゙ ゙゙゙゙゙゙゙゙゙;;;;;;;;;;;;;;;;;.......;............................. ................................;.......;;;;;;;;;;;;;;;;;゙゙゙゙゙゙゙゙゙ ゙゙゙゙i;゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙゙;l゙゙゙゙゙ ノi|lli; i . .;, 、 .,, ` ; 、 .; ´ ;,il||iγ /゙||lii|li||,;,.il|i;, ; . ., ,li ' ; .` .; il,.;;.:||i .i| :;il|l||;(゙ `;;i|l|li||lll|||il;i:ii,..,.i||l´i,,.;,.. .il `, ,i|;.,l;;:`ii||iil||il||il||l||i|lii゙ゝ ゙゙´`´゙-;il||||il|||li||i||iiii;ilii;lili;||i;;;,,|i;,:,i|liil||ill|||ilill|||ii||lli゙/`゙ ´゙`゙⌒ゞ;iill|||lli|llii:;゙i|||||l||ilil||i|llii;|;_゙ι´゚゙´
_, ,_ (; ´Д`)ゴバクッター! /ヽ_ァ/ヽ_ァ ) )
>>43 >(0)(1)(2)(3)(4)(5)(6)(7)(8)(9);
カオスだなw
var i = 10; for (; i--;) { foo(9 - i); }
for()で回す方がわかりやすくない?
俺って凄い?アピールですからw
>>57 そこで for を使ったら質問者の意図に沿っちゃうだろ。
____ / -- 丶、 / ノ ●) ヽ┏┓ .| (●, ,⊃ ノ ┏┛ .ゝ、 `´ .へ ・
知恵袋でやれ
>>43 をネタと受ける層とマジレスと受ける層に分かれるのな。
どうしたらいきなりw 知恵袋のスaテaマか?
最近書き込みの勢いが早いな
ネタもマジも迷惑
配列同士の連結がやりたいんですが a = [1,2,3]; b=[4,5,6]; a.concat(b); 連結されません
荒らしはマジそんくらいにしておけ
>>66 荒らしかも知れないけど
concatでググってご覧
荒らしならごめんね
>>66 求めている値の結果は [1, 2, 3, 4, 5, 6] だったら、ほにゃらら.prototype.push(a, b);
>>65 とか
>>67 みたいなのが荒れるきっかけになりやすいんだけどな。
「はい、分かりました」なんてなる訳ないんだから。
70 いちwいちwボカスナww(笑)w(笑)
73 :
66 :2012/01/09(月) 15:08:35.84 ID:???
ちょっとーん、70さーん… 隠さないで教えてクレピョンヤン(笑)
くせーなこいつ
>>72 >>70 だけど、ボカスナも何も素で間違ってたわw
>>73 あれ.prototype.push.apply(a, b);
すまん、もうワケワカラン。どなたか助けて下さい。 JavaScriptでちょっとしたシミュレータを作っていたんだけれど、Cookieの処理でハマってしまった。 Cookieの読み取り(下記で言うgetCookie関数)が、Cookieの最初の値は取れるんだけれど、2回目以降が取れん。 // 式1:クッキーのセット function setCookie( key, val ){ var tmp = key + '=' + escape( val ) + ';' ; document.cookie = tmp; } // 式2:クッキー呼び出し function getCookie( key ){ var arrCookies = document.cookie.split(';'); var tmpCookies; for(var i=0;i<arrCookies.length;i++){ tmpCookies = arrCookies[i].split('='); if( unescape(tmpCookies[0]) == key ) return unescape(tmpCookies[1]); } return null; }
// 式3:実際の利用時の記述 setCookie('foo', 'テスト1'); setCookie('bar', 'テスト2'); alert('テスト:foo = ' + getCookie('foo')); alert('テスト:bar = ' + getCookie('bar')); 式3の所で言うと、 fooは 'テスト1'が返って来る。 barは null が返って来てしまう。'テスト2'どこ行ったんじゃ。 もうお手上げ。
>>70 ありがとうございます
push勉強になりました
あと自己解決なんですが
代入してなかったのが原因でした
a = [1,2,3];
b=[4,5,6];
c = a.concat(b);
って書いたら連結されました
>>78 split(/\s*;\s*/)
たぶん。
他にも問題が起こりそうな箇所が色々。
当たり前だろw まずググれよww 1にググって2にググって34567ときて10まで来たら やっとここで聞ける権利をくれてやるわw はぁーっ!!俺ってググってハンサム!!
よくいうわ
結局はつまり、他の言語で語るな、と、いうことだ。 ECMA262-3 を完読したことのない JS 初心者が、それまでの知識経験だけでやろうとした事の代表例。 いかにして Java と似せて書くか、いかにして Perl と似せて書くか、いかにして Python と似せて書くか。 いかにして Java の言葉で説明するか、いかにして Perl の言葉で説明するか、いかにして Python の言葉で説明するか。 これらは全て尽く失敗してきている。何故なら、言語仕様を読んでいない、基本的な知識や合意事項が欠落しているから。
/) ( i ))) / ̄\ / / | ^o^ | ノ / < いみがわかりませんなぁ \ / ,/ / _ /´. (___)/ / l`、 ノ ノ ,...-‐''" _.l::::`ー,=-'( / ´ ,.!_;;;:r''.. ` 、 ,...-‐' _,....-‐'" `'-、:: ` 、 /.. ,....―'" `ー、__ `l /_;::::-'" /::::::::::::::::ノ ,.../._r'" ヽ`''「 ̄ ̄ (__ノ' \_\
???
すみません。シンタックスシュガーって何ですか?
>>88 一般的な用語なのでぐぐって勉強した方がいいよ。
AA荒らしとか懐かしいなあ。ま、せいぜい頑張って。技術的に間違って理解してるとどっかから 先は書けないとか動かせないとかになって発言できなくなるんで、それでせめてもと AA貼るんだよね。可哀想にねえ。
何言ってんだこいつ ああ、いつもの奴か
自演乙
Firefoxのfirebug, Chromeのデベロッパーツール, IE8の開発者ツール は最低限知っておくべき あ、知ってたらこのスレには来ないかw
質問者を荒らし呼ばわりしてる人がいつもの荒らしって認識してるけど合ってる?
広告宣伝料徴収、必至だなw 1行8000円として、1 * 8000 = 8,000円也
荒らし論はやればやるほど当人の思う壷だから。以後、スルーで。
>>66 が荒らし扱いなのはなんで?
確か前スレでも同じような質問があった気がするけど、やたら流れ早いし見逃しても仕方ない気がするけど
そゆときは「前スレ○○番を嫁カス」だけ言えばいいの。それで終わるから。
いや、すまん 書き方がいつもの奴と似てたからふっかけただけだ
やりたいことなんですがランダムで画像を表示して画像をクリックすると指定したURLにとばしてあげる。 画像リンクの上にサイトのタイトルをテキスト+center表示させてあげたいです。 画像をクリックして指定したURLにとばすことは出来ましたが、どうすればサイトタイトルと画像(リンク先)を合わせることが できるのでしょうか? <script language="JavaScript" type="text/JavaScript"> <!-- var icnt = 2; var myDate = new Date(); var d = myDate.getSeconds(); var idx = d % icnt; var bnr=new Array(); var lnk =new Array(); bnr[0]="1.jpg"; lnk[0]="URL"; bnr[1]="2.jpg"; lnk[1]="URL"; document.write('<a href="' + lnk[idx] + '" target="_brank">'); document.write('<img src="' + bnr[idx] + '" border="0" alt="">'); document.write('</a>'); --> </script> アドバイスをお願いします。
>>97 とか
>>99 みたいなのが荒れるきっかけになりやすいんだけどな。
「はい、分かりました」なんてなる訳ないんだから。
ま、過去スレが山のようにあるんで、統計的に示したらいいんじゃないかな。
>>101 サイトのタイトルはどっかに入ってるの?リンク先から取ってくるとかだと面倒だと思うよ。
変数名三文字とか昔の拡張子思い出して懐かしいな JavaScriptの変数には長さの制限あるんだっけ?
ナッシング
アダルト紹介サイト。作ってみたんだけど これじゃ情報として全然役に立たないやと思って 納得できるものを作ろうと思って色々やっていたら いつのまにかjavascriptにハマってしまいました。 他のアダルトサイト紹介サイトの管理人さんたちって すごい技術で、私も頑張らなきゃと思ってるんだけど、 難しいです。
ある特定の要素がありましてwidth:100px;height:100px;のボックスがあります この要素内だけのマウスのxy座標を求める方法をアドバイスお願いします
ゲームのスキルシミュレーターが作りたくてjavascriptを勉強し始めました。プルダウンメニューにあるoption valueの数字を読んで その値によって他のプルダウンメニューを変更したいのです。具体的には フォーム1のスキルがlv3でなければフォーム2のスキルはlv0になる フォーム2のスキルがlv1以上であればフォーム1のスキルはlv3になる という具合に作りたいのです。全然ダメだとは思うのですが今自作できた限界が下です。 <script type="text/javascript"><!-- n=document.FORM1.one.selectedIndex; //nにプルダウンメニューで選択されたvalue-数字を入れたい function Change(n){ switch(n){ case 1:if($("two").selectedIndex-0!=0){$("one").selectedIndex=3;}break; case 2:if($("one").selectedIndex-0!=3)$("two").selectedIndex=0;}} // --></script> <div id="AAA">フォーム1 <form name="FORM1"><select id="one"> <option value="0">レベル0</option> <option value="1">レベル1</option> <option value="2">レベル2</option> <option value="3">レベル3</option> </select></form> <form name="FORM2"><select id="two"> <option value="0">レベル0</option> <option value="1">レベル1</option> <option value="2">レベル2</option> <option value="3">レベル3</option> </select></form></div> このサイト見て勉強してろとかでいいのでアドバイス頂ければ嬉しいです。
eval使ってるところを会社の同僚から 「evalはどんな事があっても絶対に絶対に使うな」ときつく怒られたのですが 調べて見ても何故そんなに使ってはいけないのかよくわかりませんでした 理由をご存知でしたら教えてくれませんか?
108は過去スレからの引用
112 :
100 :2012/01/09(月) 16:27:27.29 ID:???
>>109 すまんって謝っただろw
カタワかよww
>>110 evalを使うとXSS脆弱性が高まるから
>>110 Ecmascript 5になるとstrictモードではeval使えなくなるからねー、そういうのに
備えているのかもしれない。個人的には、そこに入ってくる文字列が何であるかに
よって起こることが全然違うようになるので、コードを誤読しやすくなり、お仕事と
してやる場合は有害なんじゃないかと想像している。
>>108 >>111 へー質問コピペ荒らしなんだ?(w
諸君、私は ECMAScript が好きだ JavaScript が好きだ ActionScript が好きだ JScript が好きだ ExtendScript が好きだ QtScript が好きだ Spidermonkey で Tamarin で Ajajaで JavaScriptCore で Rhino で この地上に存在するありとあらゆる ECMAScript が大好きだ 綿密に繋ぎ合わされたプロトタイプチェーンが好きだ プロトタイプが書き換えられ、オブジェクトが拡張される様など心がおどる 複雑に入り組んだ関数スコープが好きだ 関数が呼び出され、 Activation オブジェクトが鎖のように繋がり、樹木のように広がっていく様など胸がすくような気持ちだった with ステートメントが好きだ 幾重にも繋がれたプロトタイプチェーンが、スコープチェーンに追加される様など感動すらおぼえる with したオブジェクトのプロトタイプの関数が書き換えられた時などもうたまらない スコープにプロパティを追加し、変数をすり替えるのは最高だ 複雑そうなオブジェクトを JSON で書き下した時など絶頂すら覚える 諸君 私は ECMAScript を 烈火の様な ECMAScript を望んでいる 諸君 私に付き従う ECMAScript 好きの諸君 君たちは一体何を望んでいる? 更なる ECMAScript を望むか 糞の様な ECMAScript を望むか? プロトタイプの限りを尽くし クラス世界のプレーンを殺す 嵐のような ECMAScript を望むか? ECMAScript !! ECMAScript !! ECMAScript !!
116 :
108 :2012/01/09(月) 16:35:09.65 ID:???
そんなっw(*゜o゜*)w 私頑張って書いたのにっ(;´Д⊂) 荒らしなんかじゃないですぅ(泣)
>>113 urlに仕込んだり、ブックマークレットとかデバッガで書き換えられるから結局evalを使おうが使うまいが関係なくないか?
118 :
108 :2012/01/09(月) 16:36:46.59 ID:???
>>111 >>114 過去に似た質問があったというのは知りませんでした。すみません
文章は引用じゃなくて全部自作です(´;ω;`)
過去スレあさってみます
119 :
108 :2012/01/09(月) 16:39:03.43 ID:???
だからどうか許してポンo(><)o
「キース・ジャレットのゴルトベルク変奏曲聴きたいんだけど…どこに売ってるかな?」 「あそこの○○レコードで売ってたよ」 「ありがと。行ってくる」 「そこはグレン・グールドだろ常考」 …本人がわざわざキースを指名してんのにこういう押し付けがましい輩はどこにでも居る。 まぁあえて好意的に解釈するなら、 「本人はグールドを知っていてキースを選んだのではなく、そもそもグールドを知らないのではないか。 知ってたらそっちを選ぶかもな。知っておいて損はあるまい」 という親切心からかもしれない。
>117 evalわざわざ使わないとできない事ってないじゃんか
JavaScriptをわざわざ使わなくても(ry
特定のキーを順番に入力された場合関数を実行するにはどうしたらいいですか?
jsがそんなに好きならmozilla.orgのjsの各プロジェクトに参加するといいですよ
俺はJSよりも
..... .:_ -― ─- 、:. ...... ..::⌒>.、:: ...::/::.::/::.:: ヽ::.::.\::....::x<⌒::. ::x-=≦.::.-=`ミO.:/:/:/|:./.:ハ::ヽ::`O::-=ミて`く⌒ヽ:: ::, イ::ノ⌒'Z _⌒ Y彡::./V j/ヽ::ハ.::.V::Y⌒/;^)- 入 \: ::/ :/八 '(:::::':,\ トV::./⌒ ⌒ヽ.::∨/,.::'::/ /:::∧ '\:: ::/ `V::/ヽ\ \ :':, 八W __ __ jハ:::l, :':::::, ′ /:::/  ̄ ノ\:: ::〈 ,.:'::/ ヽ \ \:l:ハ| 〃⌒ ⌒ヾ ハ:|::::/ ,.イ:::/ ∠.::勹:: ::/ ! :.'::::∧ | ヽ \ム .::::: r ┐ ::::.,'ノ/ / /::/ |__:/:: ::∠._jハ_ん:ヘ/}ノ /ヘ ヽゝ_ ヽ ノ イ/ /⌒ん'⌒)_>::  ̄  ̄`ヽ `=≧r ‐i彡''´ /::  ̄ ::\ヽ ` ´ / /:: :: ,′ ::i :; :; i:: ::| |:: ::l |:: ::j :: ::,′ l:: ::/ |:: ::/ !:: ::/ 〉┴r :: ::,′ /:: ::| |::
の方が好きだぜ
128 :
108 :2012/01/09(月) 16:55:48.43 ID:???
>>121 電卓作るときとかeval使わないと厳しい
電卓・・・?
evalがなきゃできない事はない evalはevil evalは不要 不要 不要 不要 不要 不要 不要不要不要不要不要不要不要 不要 不要 わかったか
2*2ってテキストエリアに入れられたら eval(2*2)とかやらんでも他にやり方色々とあるんちゃう?
今までeval使うしかないのかッッ・・・!っていう状況何度もあったけど 結構頑張ればイケル
テキストエリアからのあらゆるコードを実行するために! ユーザーからのあらゆくコマンドに対応するためには!
>>130 >>134 じゃあやってみろよ
eval使わずにinput以下の計算式いれて答えさせるんだろ?
((1+2+3)*2+19*(30*2))/2
それもeval不要 eval無しでJSでJSのパーサーを書くことは可能だと証明されてる
eval使用を非推奨なレス多いけど セキュリティリスクを伴うとか聞くけど 具体的な話を聞いたことがない どういう風にevalを使われるリスクがあるわけ?
不要なのは分かったからコードで見せてね
Array.prototype.slice.call(arguments) これは、 Arrayオブジェクトのプロトタイプのsliceメソッドを呼んでいて、呼び出すときにsliceの中におけるthisをargumentsにして呼び出していて、 結果として、大元の引数を全て返している、でいいですか? また、使いどころは引数が不定のとき、でいいですか?
炉梨流棒術(炉梨棍) 中国に数多あるという棒術の中でもその長い歴史で 一際異彩を放つものが唐代に流行した炉梨流棒術であろう。 己の肉体の棒のみで戦う姿は最早伝説といっても過言ではない。 しかしその修行は大変厳しく、修行者たちは妖しきものを除き 己の覇気を高めるという意味で「妖除覇覇(ようじょはぁはぁ)」の 掛け声を出して修行に励んだという。 しかし当然門下生には厳しい修行に負けて脱落者も出ており、 そういった者は近隣の村のトシバも行かない少女によからぬ行為を 行う者も多く、当時社会的な問題になった。 民衆はそういったものを「丙奴(ペド・甲乙丙でいえば丙のような奴)」 と呼んで忌み嫌われたという。 現代でも少女との性行為をほのめかすような奴に対して 「氏ね、ペド野郎」という事があるが、これは無論当時の名残である。 民明書房刊 『萌える!中国武術』より抜粋
JSのパーサー作るんならeval使うのと変わらんだろがw
なんか今日は荒れてるな
実際にevalで被害があったケースでもあるの? 聞いたことない
evalが不要なら何でevalは実装されているの? 何でJavascriptの仕様からevalが削除されないの?
JSで再現したCPUの上でLinux再現したのがあったろ あの上でCのJSパーサー動かせばひょっとしてevalいらないんじゃね!?
>>147 互換のためだけ
stripモードでは仕様から削除されてる
ECMAScript 5 からは eval は削除されています
evalあったって個人サイトで使うなら何のリスクもないだろ
javascriptパターンにも使うなって書いてあった
>stripモード
evalは悪魔 悪魔 悪魔悪魔悪魔悪魔悪魔悪魔悪魔悪魔悪魔悪魔悪魔悪魔悪魔
>>137 フツーにNumberと正規表現で一発じゃねぇかよ・・・。
evalって具体的にどんなリスクがあるっていうのよ wikipediaにさえ具体的な話ねえし 被害実態すら存在しない 架空の話題じゃねえか 机上の空論
evalを使っていいのはJSまでだよね〜
>>155 非効率だがそれでも出来るな
俺も見た瞬間それ考えた
お前ら懲りずにまた1でも0でもない0.5くらいの事を 1か0かに無理矢理決着付けるために争ってんのか(笑) 暇だね〜(笑)
>>159 やだよめんどくせぇ
ここまで言って、それでも出来ないと思ってるならもうそれでいいよ
__,. -─- 、_ . /三≧x≦三≧ミミ、_ /三三≧x、≦三≧xミミミ、 . /三≦幺 `ー=ニ三≧、 /彡'彡' ミミi |彡彡 ミミミ| |彡彡 ,.......、 ミミミ! r‐'、彡__/〃 ̄_`ヽ___, ‐≠≒ミ、 ミミミL { V ! ''´ゞ'ヽノ | ,rュ、_ 「`レ' } ヽ ノ ` ー一'´ 丶、__,ノ ,〃 い /r'´ ヾ、, ィ / し1 / ¨゙ー'¨´ ` / f ! { ーrrrrrrrrr;、_, ト' ', `二二´ ./ ', ヽ / } 、____,/ / | _,.‐个、 ー−一 '´ , 个.、_ __, -'´:::::::::| \ ,.-'´ l!:::::::`:ー.、_ バカカ・コイツァー [ Bacca Koitzer ] ( 1928 〜 1938 ドイツ )
>>160 それってサイトにevalコードが仕込まれてるってわからないと
できない話だよね?evalのリスクじゃなくね?
>>160 XSSでevalを利用するってむしろありえなくね?
/: : : : : __: :/: : ::/: : ://: : :/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 ヾ 丶 "~、ソ:: :い:: : \_ ノ , ヾ 丶
evalを使わないと処理できないと思う場合、 それは、大抵実装がおかしい。 evalを使わない実装にするのが当たり前。 非推奨な物を、わざわざ使うなんてのはナンセンス。
evalが無ければXSSの心配が減る。 余計な心配事をわざわざ作る必要がないじゃん。
わざわざeval経由で悪質なコード実行する意味を感じない Javascriptが有効ならそのままコード走らせればいいじゃん
アレだろ、もう皆一瞬で答え出しちゃったけど 自分だけわからなかったのが恥ずかしくて引くに引けない状況なんだろw 最初口数多かったのに今じゃ煽るだけw
>160顔真っ赤www
eval坊は絶対にevalが必要なケース挙げてみろよw 挙げれないだろw
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ラン大学生でも即答できんじゃね?
先にeval使って問題が起きるケース挙げろよ
冬厨が沸いてんのか
前置き ・個人サイトに脆弱性があっても実害はない 利用者がそのサイトを信頼していない限りいくらインジェクションやらXSS出来ても害はない evalで脆弱性になる条件 ・利用者がサイトを信頼してアカウントなりを作ったりしてること ・外部ドメインからのPOST/GETを受け入れて入力値を出力すること(検索語句等) ・入力値を検査せずevalで利用すること 結局、わざとらしく作らないと無理
そのサイトのどこにevalのコードが仕込まれてるかどのようにevalが使われてるか分からないと 悪質なコード仕込めなくね? わざわざサイトの構造調べてまで仕込むだけのメリットがあんの?
>>182 あーなるほど、JavaScriptのJの字もわからないような奴が
必死に俺難しいJS書けないからevalは必要!って訴えてたわけね
いや〜、あのね・・ evalは確かに全部危険って訳じゃないよ。 何もかも危険なら、そんなの残ってない訳だから。 ただ非推奨な訳よ、今後使えなくなったら動かない訳よ、そのスクリプト。 それに、evalは使う人にスクリプト書いてもらう訳よ。 エラーチェックとか、しない訳よ。するにしても、すごい厳格にしないといけないし、 そのチェックで本当に完璧かなんてわからない訳だよ。 そもそも、「俺ん所個人サイトだから大丈夫」とかって話じゃなくて、 プログラムの作法的に間違ってる訳で、危険があるかもしれない物を、 大丈夫なんじゃないの?なんて考えで使ってる時点で品格を疑う。 eval使わなくてよい実装にするのが基本であり当たり前。
計算式実行するだけのライブラリとか無いの?
お前ら揉めてないで みんなで協力してsafeEval関数ライブラリー作れば解決なんじゃね?
互換性残すためにeval残してるって さっさと見切りつけて削除しないJavascriptだかECMAScriptだかの仕様と ブラウザの仕様が悪い
>>188 それ作ってこのスレで販売すれば売れるな!
インタプリタ言語の大長所の1つをあっさり切り捨てる必要ないじゃない evalが完全不要ならコンパイル言語にした方がセキュリティとかたくさん長所がある
Javaはコンパイル後もeval使えたような
javaにevalは存在しません
コンパイル後にevalが使える言語もあるが コンパイル後のファイルにパーサもどきが一緒に入ってる変態設計 evalライブラリみたいなもん
正規表現で計算式分割とかかなり複雑じゃね?
もうevalって名前も出すな 見ただけで吐き気がするわ(笑)
>>197 可能ってだけで一発で書けるようなもんじゃないよね
たかが一発で掛けるコードを出し惜しみする理由は出来ないから
>>179 一発
即答
そんな平易なコードなのですか?
請求表現は関数渡せば前後の文字抜き出しながらできるから それでやったらいいんじゃない?
逆ポーランドなんちゃらで取り出せばおk
即答できるとはFラン大学生も随分と賢くなったものだな
Fラン大学生は各種IT企業から引く手数多な人材なんだよ
>>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');
九九さえ出来ないやつがチラホラいるFラン大学生が即答とは それなら小学生でも即答できそうだな
>>155 が今から一発で↓を計算してくれます
1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31
はい、このスレの結論 次回からテンプレ載せ ・evalは完全不要です ・evalに関する発言は禁止です ・evalを使いたい人は向いてないのでJSやめなさい
>>210 ほらよ
謝罪はよ
t="1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31"
a=(new Function ("return "+t))();
alert(a)
>>213 それってevalと同じようなリスクあるんじゃないの?
>>213 new Function = eval 正規表現使うんじゃなかったの?
>>214 は?しらねーし
eval使ってないからいいだろオラ
>>214 これで安全だな
function keisan(){return 46;}
keisan('1+2+(3*4)+5*7-((30/6)*(2*10/5+3-(1-1)))+31');
結局Numberと正規表現を使われたコードは貼られなかった
>>210 本当に一発でやられてクッソワロタw
こんなのも出来ないでeval必要とか言っちゃってるんだから恥ずかしい
alert(String.fromCharCode.apply(String, [101, 118, 97, 108]));
>>208 keisan('alert("やあ");');
あのなあ、この手の実装はjsonもそうだがEVAL使っていいんだよ。
正規表現で妥当性を検証してから後はインタプリタに任せる。これが一番高速で忠実な方法。
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
ここまで言ってたのに完全に論破された馬鹿久々に見た
>>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 強引な論展開乙
揚げ足取ろうにも、それら全てがコードで論破されてんのな
>>228 あれ?セキュリティ上の問題があるからeval使うなって言ってたおまえらが
同じセキュリティリスクあるコード書くの?
すごいねプロのプログラマ
>228 __‐`'´''"'マ ____\ ー‐┐ |一 Z. __`ゝ \ ノ´ ⊂冖 ∧ /| ゙仆斗┘リート=┬-、_ \ ー‐┐ ,/ / ∨\/ | `L,.っ,ノ u }ノ ノ \ ,> ノ´ \ |__ 兀.!_// i | l、 く. ー‐┐ ー|ー ー‐┐ ー|一ヽヽ / u' \ヽ‐'´ !| ト、 \ ,ノ´  ̄匚ノ ノ´ ノ こ /_____, }j ハ、 ヽ ヽ,___/ / ー‐┐ ┼‐ヽヽ ー‐┐ ニ|ニ. / ___ノ /\_,≧/ u 人. / ,ノ´ ノ こ ノ´ ⊂冖 く {上rン´ ,厶../ / ヽヽ \ || ニ|ニ ー‐┐ | /  ̄ ノ{こ, /,〃 !| \ ・・ ⊂冖 ノ´ l.__ノ \ ,.イ !l`T´ | / |:| / | ー‐┐ ー‐;:‐ \ // l | |_| ∠.、 l.__ノ ノ´ (_, / ヒ_ー--、_|ー、____,ノj┘ / ┼‐ ー‐┐ / / \ ̄\ー`トー-< / ノ こ ノ´ \ \ \ ヽ \ ヽ  ̄ ̄| | | 」z.___ > \. ヽ. ヽ l |/l /| ∧ /\ ・・ /| (_, / ) lヽ ', l、 |/ | / V ┼‐ \ , イ、_,上ハ } 小 |/ ノ こ \ (乙≧='''"´ ,∠,__ノ/ ┼‐ヽ / 厶乙iフ/ ノ ⊂ト く `¨¨¨´ \
>じゃあやってみろよ >eval使わずにinput以下の計算式いれて答えさせるんだろ? >((1+2+3)*2+19*(30*2))/2
236 :
208 :2012/01/09(月) 18:17:02.63 ID:s1gtT2R7
>>224 ,225
気付くとは思ったけど、ばれちまったかw
>>232 はへ??
俺そんな事言ってないんだけど??
goto文の使用していいか悪いかって話に似てるなぁ eval使うしかないな。って思う前に、 eval使わないよう実装変えるにはどうすればいいだろうって考えろ
/|:::::::::::::::::::::ヽ.:.:.:.:、:.:.:.:、:.:.:.、.:.、.:.:.:.:.:.::`゛> /{::|:\:::::::\.:.:.:\.:.:.ヽ::.::.ヽ:.:.ヽ::::::::::.:.`゛ー- ..,__ : 何 : /:|::',:ト、::::::ヽ、:.\:.:.:.\:.:.ヽ:.:.:\.:.:.:.:.:::.:.:.:.:::.::::_;:-'´ : : : : が : //:/:::|::',|::'、:::::::::\:.:\.:.:.ヽ:.:.:\:.:..\::::::::::::\、::::\ : : : : 何 : /!::|::l::::/|:::l:ヽ:\::ヽ:.:\:.:\.:::ヽ:.:.:ヽ:.:.:.:\::::::::::::\ ̄ : : : : だ : |/l::|::|::|:ト、:::::::::、、:ヽ、:.:.:.:::::::::::::::ヽ::::.:ヽ:.:.:.:.\:.:.:.ヽ:::\. : : : : か : |::|::/l::|::|r‐ヽ:::::ヽ(ヽー,―\::::::、::::::::::ヽ::.:.::::::.:::::::ヾ. ̄ : : : : : }//l::|:::|{(:::)ヾ、:::ヽ \!(:::) ヽ,:::ヽ:::::::::::::::::::::::::::::::::::ヾ、 : : : : わ :. |/l::|::|:::|ヽ==''" \:ヽ、ヽ=='" |:::::::::::::::::::::::::::::::::::ヽ、::::\ か / ',|::|:::| / `゛ |!::::::::::::::::::::::::::::ト、::ト、_` ゛` ら l::!::::ト、 '、 _ ||::::::::::::::::::::::::ト:ヽヾ| | ̄ ̄ ̄`ヽ、 な r'"´||',::::', |:::::/l:::::|\:::ト、ヾ | | / / \ い / ll ',::', 、 ーこニ=- /!::/ ヽ:::| ヾ、 ノ ノ / ,イ ヽ、 ,' | '、:, \ -- ,. '´ |;' l ヾ、. // / | l: l | |! ヽ; ヽ /.: i! / ゛// |l / | | |
evalに反対してる奴らって別にセキュリティを考えてるわけじゃないんだね
たぶん冬休みにJavascript始めたJaavscript歴1週間とかなんだろ じゃなかったら頭がちょっと弱い子とか
早く 計算式を計算してくれるライブラリを紹介するか Numberと正規表現で計算するコードを書いてくれよ
あんなにeval使うな取ってたのに出てきたコードが誤魔化しでワロタ 計算式を解析するコードがそんな数行で書けるわけないのにねw
どうせ今必死にeval使わない方法でググってるんだろうwwwwwwwwwwwwwwwwwwwwwwwwww
____ / \ /\ キリッ . / (ー) (ー)\ / ⌒(__人__)⌒ \ <じゃあやってみろよ | |r┬-| | eval使わずにinput以下の計算式いれて答えさせるんだろ? \ `ー'´ / ((1+2+3)*2+19*(30*2))/2 ノ \ /´ ヽ | l \ ヽ -一''''''"〜〜``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
とりあえずリレーでsafeEval作ろーぜ! 俺から $=function (){} $.safeEval=function(t){ return new Function("return "+t); } ↓
いつからリアル中学生の溜まり場になったんだ
なんで((1+2+3)*2+19*(30*2))/2なんて簡単な数式にしたんだろうか・・・。 難問だったのかなぁ
逆ポーランドなんちゃら使えばいいだろ 計算式の文字列1文字ずつ取り出してはスタックに入れて 演算子出たら取り出して計算してスタックに入れると 文字列全部取り出したら結果出すってね
なんか面倒な初心者がいてるなぁ・・・ evalを使わないで計算できるように自分で考えろよ・・・ 何責任転換して、見つけれなかったらお前らが間違ってるみたいな事言ってんだよ。
$=function (){} $.safeEval=function(t){ return new Function("return eval("+t+")"); }
だからJSLinux使えって言ってんだろ eval坊はまずそれをできるまで試してからもの言えよ
できたぞ!! $=function (){} $.safeEval=eval;
荒らしとかキチガイってこーやって生まれるんだろうな 無知が知ったかして、叩かれ、引けなくなり反論するも、徹底的に叩かれ、憎悪が溜まり、復讐をと イジメられる方にも原因はあるのよね
【審議中】 ∧,,∧ ∧,,∧ ∧ (´・ω・) (・ω・`) ∧∧ ( ´・ω) U) ( つと ノ(ω・` ) | U ( ´・) (・` ) と ノ u-u (l ) ( ノu-u `u-u'. `u-u'
お前ら懲りずにまた1でも0でもない0.5くらいの事を 1か0かに無理矢理決着付けるために言い争ってんのか くだらねプッ
257 :
208 :2012/01/09(月) 18:32:50.30 ID:s1gtT2R7
もう不毛な争いはやめろよ function keisan(a){ return prompt('問題 '+a+' の答えは?')} keisan('((1+2+3)*2+19*(30*2))/2');
結論:誰も書けない
Javaスクリブトを最近習い始めたんだが、ちょっと疑問。 これっていわゆるブラウザ上で色んなことをするやつだけど、 あるボタンを押す→ボタンの下あたりに適当なデータぶちこんだテーブルを表示する とかっていうのも出来るの?できたとしてもやっぱりテーブルのデータはあらかじめどっかに書いて おかなきゃ駄目だよな。DBとかから引きずってきて表示、なんてハイレベルなこと できそうなかんじじゃないし。 一応調べたらなんか<div>タグにid=名前ってつけてやって何かするって奴が 近いようだが…。
結論:もう面倒だからeval使え。それで被害者でても俺は知らん。
エバラエバラっておまえらそんなに焼肉食べたいのかよ!!!
>>254 とか
>>256 みたいなのが荒れるきっかけになりやすいんだけどな。
「はい、分かりました」なんてなる訳ないんだから。
>>259 固有名詞を間違えるな
×Javaスクリブト
○Javascript
っていうか計算式にeval使うような奴は他の時も解決方法がわからず一人eval使うだろ
evalは不要 悪魔 不要 悪魔 不要 悪魔 不要悪魔不要
┏┳┳┓ ハイ. ┏┳┳┓ ┏┫┃┃┃ 雑談は ┃┃┃┣┓ ┃┃┃┃┣┓ ここまで ┏┫┃┃┃┃ ┃ ┃┃┏━━━┓┃┃ ┃ ┃ 雑談 ┣┫ . ・∀・ ┣┫. STOP!┃ ┗━━━━┛┗┳━┳┛┗━━━━┛ ┏┻┓┃ ┏━┛ ┣┻┓ ┗━━━┫ ┗━┓ . ┗━━━┛
>>259 サーバ上のDB叩きたいなら、サーバ上にそういうスクリプト置くなりして、
ajaxとかで問い合わせて表示するようにすればいい。
ブラウザ上のJavaScriptだけで、サーバ上のDB叩くとかは無理
devil ↓ evil ↓ eval あー、なるほどそういうことかー
なんだこいつら(笑) evalに親でもころされたのかw
>>264 計算式を解決する
代替コードのを示してくれ
代替コードを紹介してるサイトを教えてくれるのでもいい
>>264 固定的にEVAL=絶禁としたらあかんよ。
このまま1000までいくよ〜
ここからラーメンスレ
つかユーザーが計算式入力するとかどんな状況だよ
白組がんばれー 赤組がんばれー
グーグルの検索窓に計算式ぶちこめばおk
どこかのブログのネタに洗脳されてevalは使いたがらない自称上中級がいるのか
ひとまず
>>181 で具体的にevalの危険性を語ってくれてるから初心者は読みなさいね
280 :
271 :2012/01/09(月) 18:41:40.97 ID:???
>>270 それはあるよ。構文木とかで調べればいい。
ただ、インタプリタが実装していることをその上でもまた実装するのか、って問題がある。
一番計算の仕様に忠実なのはインタプリタだしね。だから、さっきも言ったけど正規表現とかで
妥当性だけ確かめて、あとはインタプリタに投げる方法もある。
>>268 いいこと教えてやる
>devil→悪魔
>evil→邪悪
どういうことだってばよ
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 |
>>278 読んじゃった・・・
あまりの恐ろしさにもう1人で夜中にトイレにいけなくなっちゃったよ・・・
つまりdevil(悪魔)をevalするとevil(邪悪)になるのか
なに、どんどんトンチ大会になってるの?
冬厨が沸くといつもこうだ
昨日は割と良かったんだが
冬厨じゃなくてeval厨だな
evalをNGワードにぶっこんだ
進行早いなあ。
292 :
208 :2012/01/09(月) 19:00:40.05 ID:s1gtT2R7
ぶっちゃけた話すると、FirefoxやChromeで使われているFirebug系のデバッガはeval()で評価してるんだけどね
294 :
208 :2012/01/09(月) 19:04:25.89 ID:s1gtT2R7
>>293 window.eval=null;で、ほぼ無効化できるからやってみ
>>294 chromeもfirebugもさほど変わらんな
そもそもeval自体がConfigurableとWritableがfalseになってそうな気がするが
それにwindow.evalにnull代入したって
次回の実行コンテキストはまた違うってのが多いだろ
つうかユーザーが入力したコードが実行されるからって何が問題なわけ?
298(肉屋)が一言↓
僕なんだけどさ よく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使いがいるぞーー!!!」
以上肉屋からのコメントでした!
300 :
208 :2012/01/09(月) 19:36:43.25 ID:s1gtT2R7
>>296 何の問題もない
JSON.parse()がなかった頃はeval()を使っていたし、別にeval()だけが危険なわけじゃない
>>300 そんな事言ってると
var hoge = {test:1},
key = 'test';
alert(eval('hoge.'+key));
こんな感じの糞コードが増えそうだから
eval使って何の問題ないとか言うのは辞めて頂けないか
こんな糞コードのメンテとか考えた事あんの?って感じだわ
JSON.jsなんかでもeval使ってたけど
それらはちゃんとチェックしてからだった筈だが
正規表現で書いたよー。 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"));
>>302 console.log(calc("5*5*(-5)"))
すまそ。先頭の5*は不要だったな
やっと来たか
あとこれも calc("1/2+2"); // 0.7 (正しくは2.5)
注文の多い料理店
Numberはいらない子
309 :
302 :2012/01/09(月) 20:03:42.63 ID:???
もう無理 (´・ω・`)
>>309 そうだろw普通こういうのは正規表現オンリーでやらないからな。絶対対応しきれない。
311 :
302 :2012/01/09(月) 20:09:00.25 ID:???
指摘された 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; }
渡された文字列が計算式かどうかを判定してevalだろ 計算式以外の文字列ならエラー返せばよいわけだし ()+-*/^%1234567890.以外の文字があれば弾けばだいたい安全だろ
おkじゃねーよw 計算式かどうかチェックしたあとにエネルギー線によって ビットアップセットが起きる場合も考えないといけない その場合eval使ってた方が確率的に危険だろが
nth-childのnthは何かの略ですか?
>>316 シングルイベント・アップセットとは
主に外部放射線に起因するソフトエラーは、またの名をシングルイベント・アップセットともいう。
319 :
Name_Not_Found :2012/01/09(月) 20:19:58.52 ID:ygGAYZhC
sage
>>315 n'thの略
これでわから無ければ諦めなさい
(+5)*(-4)--5+-6
それが電卓で入力されることはない
>320 とりあえず今月中にいいの作ってくるから待ってて
乗せられて冬休みの宿題を作ってやるスレ民であった。
おまえら
>>110 から200レスもevalで喧嘩してるのか…
ヽ|/ / ̄ ̄ ̄`ヽ、 / ヽ / \,, ,,/ | | (●) (●)||| | | / ̄⌒ ̄ヽ U.| 1/5スレ・・・・・・・・ゴクリ。 | | .l~ ̄~ヽ | | |U ヽ  ̄~ ̄ ノ | |  ̄ ̄ ̄ |
・evalは絶対に使うべきではない ・基本的には避けるべきだが、局所的にevalの使用機会がある ・evalは積極手に使うべき
盛り上がってるね。数式のパース書いてみたけど。個人的にはちゃんと チェックできる奴が分かっていて使う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レスなのでご容赦を)
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>
面倒くさいからconsoleで実行できるスクリプトだけのにしてくれ
>>330 すみません。その場合、sに数式文字列を格納し、exp()を実行します。それだけ。
電卓関係ないな
>>332 はい、そりゃ誰でも書けるとは思います。練習としてやってみました。
evalはテンプレートエンジンとかで使うな
ここみたいな低レベルなスレでは一律使うなでいいんじゃねーの
>>110 も危なっかしいから使うなって言われたんだろ
>>333 最終的にJSパーサーを作るまでやるから
カッコつけんなよ
それこそ328に作ってもらえばいいんじゃねの
amachang先生やdankogai先生レベルじゃないと作れないよ おまいらには無理
eval否定ってJSONどーすんだ。
342 :
Name_Not_Found :2012/01/09(月) 23:05:48.64 ID: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>
>>339 もちろん
>>328-329 はかっこに対応してるけど。そういうお題だったから。
>>341 別に、ヘンなものがないか検査してからeval()するか、全部自前でパースするか、どっちでも
いいと思うけど。何も考えずにeval()する奴が叩かれるというだけでしょ。
>>342 jsonObject[1] とかじゃないの。テンプレ
>>2 のQ4/A4も読むといいよ。
JavaScriptでevalを使うなって話は Cでgotoを使うなって話に似てる。 判って使う分には問題ない。 むしろ、他人の「使うな」って評価を無批判に受け入れちゃう方が問題。 自分で熟慮して、「使うな」って自分を律する事には口を挟まない。
いやJSONにeval必要ないだろ
347 :
Name_Not_Found :2012/01/10(火) 00:38:58.18 ID:CIijrwn/
(おいおいコイツらいつまでやってんだよさっさと出てけよ・・・)
evalはフェイルセーフじゃないから好きじゃない
勉強してていくつか質問 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 :2012/01/10(火) 02:24:00.92 ID:CIijrwn/
jsを弄る前にhtmlとcssを勉強したほうが幸せになれるぞ
>>351 やってみる。
しかしどの程度までできるようになったらいいんだ?
とりあえずhtmlとcssとjsの区別がつくまで
>>352 HTML5とかDHTMLの質問スレッドがあればそこに行った方がいい
もはやここは隔離スレだな
質問者が初心者なのはいいんだが、回答する方に初心者がいると不毛な議論に発展するんだよな
初心者スレだからそれでいい
HTML5が流行ってWebProgから人が流れ込んできたせいだな 2012年はHTML5の時代やで
本スレがないのがよくない
ECMAScriptスレがあるじゃん
361 :
Name_Not_Found :2012/01/10(火) 04:42:48.16 ID:V9aGb3Q1
>>342 var jsonObject = {
"1":"a",
"2":"b"
}
1がクォートされて"1"になってるんで
jsonObject["1"]
あと、これはjsonではなく、ただのJavaScriptのオブジェクトな
362 :
Name_Not_Found :2012/01/10(火) 04:43:57.88 ID:V9aGb3Q1
蛇足かもだけど var jsonObject = { "1":"a", "2":"b" }; ↑最後にセミコロンを
>>360 ここは(D)HTMLで使うJSだからECMAはちょっと違う
364 :
302 :2012/01/10(火) 05:11:30.35 ID:???
>>361 指摘するのは、そこじゃないて。
> alert('jsonObject.1');
まず、クォートが不要。
そしてドットシンタクスの場合、識別子である必要があるから、
数字で始まる値は指定できないんで、書くなら jsonObject[1]。
(jsonObject["1"] でも良いけど)
あれ、名前が…。
jQueryでドロップダウンメニューをslideToggleで作ったのはいいんですが、 連続でマウスオーバーしたらその回数だけ開閉するのはどうにかならないんでしょうか? 調べてもそれらしい情報がでてこないもので・・・
数値の入った文字列をevalで数値化してるのですが あたまに"0"が入ってると8進数になってしまいます 単純に頭に0があれば削ればいいだけなんですが もっとスマートな方法は無いのでしょうか?
>>367 eval()を使うのが間違い。parseInt(文字列, 10)を使う。
>>366 onmouseoverではフラグ立てるだけにして、setInterval()から呼ぶコードで
フラグ立ってたらメニュー開くようにすればいいんじゃないかな。
eval不要説唱えてる奴は宗教でしょ。 言われてた当初はそれなりに意味があったのかもしれないけど 多くは思考停止して闇雲に追従しているだけみたいな。 スレの性質に関係なく「sageろカス」とかいうのもその類。 「スクリプトのコードはコメントタグで囲わなきゃいけないんだよ^^」なんて 自称JSそれなりに知ってる人さんから昔優しく“指導”されたことがある。 そのくせ「Netscapeなんてもう誰も使ってないし切り捨てていいよ」みたいな。はぁ。 自称JSそれなりに知ってる人さんにとっては、Netscapeなんかよりも JavaScript非対応でコードが文字列としてずらずらと表示されちゃうブラウザ (NCSA Mosaicとかですかね?)の占めるシェアの方が無視出来ないらしいです。 そういうくだらないしがらみはもう捨てていきましょうよ。
eval()必要説も同じくらい宗教なんだよね。宗教論争、無意味でスレの浪費だからやめてほしい。 せっかく終わったのに上から目線でまた火をつけるとかもやめてほしい。
371 :
Name_Not_Found :2012/01/10(火) 08:30:39.76 ID:6w+N2uy0
>>366 少し待ち時間入れればいいよ
マウスオーバですぐ発火させないで、setTimeoutで20msecくらい
待ってから表示させるだけでだいぶ違う
触った時のレスポンスと待ち時間はバーターだから丁度よいタイミングに
なるように待ち時間をすりあわせするといいよ
ここまで書いて
>>368 に気付いた…
せっかくだから投下しときますすんません
まあevalはCのgotoと同様に、宗教上?の理由で嫌われているのと同様だろうな。 要するにユーザーの入力を単なる文字列では無く、 JavaScript的(あるいはDOM的)に意味のあるものとして利用するのは危険なので、 evalでもinnerHTMLでも、本当にその文字列を使って大丈夫かどうかを必ず意識する必要があるという事。 初心者云々は単に慢心を生むだけなので、初心者経験者は全く関係無い。 evalが嫌われるのは、代替手法が無いような本当に必要となる場面が少ない(JSON文字列をJSONオブジェクト化するなどくらい)ので、 わざわざリスクのある手法を回避したいという人間が多いからでは。
>>373 ん?数式の解析とかは
>>328-329 にあるからね。
>>372 とっても賛成。テンプレに入れるかはともかく、Q&Aにしてみた。
Q. eval()は使ってはいけないと言われたのですがなぜでしょう。
A. ユーザ入力をそのままeval()に与えるということは、ユーザにあなた
のプログラムを全く任意に改変させるのと同等なリスクがあります。
また、プログラム保守上も、そこで「何が」起きるかコードを見たとき
に分かり難くなるというリスクがあります。なのでeval()を使う際は
(a)与える文字列は予め検査して想定されている事だけが起きることを確認。
(b)そこで何が起きることを想定しているかをコメント等で記述。
の2つを守るのがよいスタイルですが、これは一定の手間が掛かります。
過去スレにあるほとんどの(99%以上の)事例は「数値への変換」「変数
の設定」など自然かつ安全な代替手段があるものなので、そのような
ものを知らないレベルの人が安易に使うことを警告して「eval()禁止」
と言われることが多いようです。eval()を使わなければできないことは
確かに存在しますが、そのようなことで普通のWeb制作者がやりたいこ
とは大抵、上記の要件をカバーしたライブラリなどの形でパッケージさ
れたものがあるので、自分で直接eval()を書こうとする前に十分見直さ
れることを薦めます。
/: : : : : __: :/: : ::/: : ://: : :/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 ヾ 丶 "~、ソ:: :い:: : \_ ノ , ヾ 丶
やっぱり宗教だなあ evalに限った危険なんて1つもないのにw
ユーザーが入力したコードが実行されて何が問題なのかわからない あるとしても重箱の隅を突くような特殊なケースじゃないか? そんなんだったらevalに限った話じゃない
>>366 var obj = $(selectors).not(':animated');
animate()実行中要素を選択しない
var obj = $(selectors).stop();
実行中animate()を停止
別にユーザが任意の改変をしてもかまわないという人は別にそれでいいんじゃないの。 ふつう、ユーザ入力に対してチェックとかするよね。それはサーバ側に送られる ユーザ入力をある程度制御しないとまずいと思うからやるんだと思うけど。 JS上でのチェックとサーバのチェックと2重にするところを、サーバだけの チェックになっても構わないとか、よそのAPIをJSから直接叩いてるところで 何を叩かれても構わないとか、そういう意味になるわけどいいんだろうか。 漏れはそれは嫌だからユーザに任意の改変は許したくないと思うわけで。
ユーザー入力じゃなくて開発者の意図しない入力って言えよ
>ユーザ入力をある程度制御しないとまずい これは間違いだろ JS側での入力チェックはユーザビリティの観点以外の何物でも無いと思うのだが
全くもって意味わからんな ユーザーが改変したいと思ったときは わざわざソース調べてここにeval使われてるから狙おうとかしないだろ 普通にアドレスバーに打つだけ それにそもそもformチェックでevalの出番はないでしょ
屁理屈こねないで使うなって注意されたら使うなよ。 躾がなってないなこいつら。
>>382 フォームとかからサーバに投げる前段階としてのチェックならそうだけどね
入力から、それによって引き起こされる何らかのアクションまで
ブラウザ側で完結してる部分なら、当然ブラウザ側でちゃんとチェックしないといけない
問題とされている領域を間違えてるっていうかなんと言うか…
jsでアプリケーション作ったこと無いから、もしかしてこういう発想しか出来ないのかな
入力をチェックすることとeval禁止が直接結び付かないんすけど… こいつさっきから何言ってんだ? 例えば NAME=prompt("主人公の名前を決めてください","") 〜NAMEのチェック〜 とやるのはわかるが こいつが言いたいのは NAME=eval(prompt("主人公の名前を決めてください","")) 〜NAMEのチェック〜 ってことか??
>>385 うだうだ言ってないで具体的で示せよ。
特殊じゃない凡例をな。
evalは悪魔 悪魔は不要 不要不要 不要 悪魔 悪魔 不要 悪魔 不要 悪魔 不 要悪 魔 不 要 悪 魔不要悪魔不要悪魔
>>385 クライアント側のみで完結する方が珍しいだろ。
通信が発生する時点で完結はしないからな?
それに
>サーバ側に送られる
これがついてる時点で"ブラウザ側で完結してる部分"なんて意図するわけ無いだろ
ブラウザ側で完結する部分ならチェックするのは当たり前
391 :
390 :2012/01/10(火) 10:56:43.40 ID:???
あばばば、cssスレで訊くべきでしたね そしてclip:rectで解決できました おさわがせ
そういう特殊なことはブラウザ間で差が出るからやめとけ 素直にシンプルにCSS3使っとけ
>>393 えー、別にその要素のXY座標を求めて差し引くだけじゃないの。
offsetTop、offsetLeftで調べてみては。
>>394 今から調べてやってみます
どうもありがとうございます
>>395 マウスイベントのoffsetX,offsetY
Borderがあるとブラウザによってややこしくなるから注意
>>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);
こんなかんじでやれる。
±180消し忘れた
jqueryは甘え
コードがスッキリするから出来ればjQueyrセレクター使って欲しい
CSSセレクタと言え
jquery独自のセレクタがあるんだけどね
独自セレクタがあっても基本的な事はCSSセレクタで事足りるだろうが
xPath使え。捗るぞ。
>>404 「jqueryセレクタ」って言葉をわざわざ指摘して「CSSセレクタ」に強要する理由にはならんな。
407 :
Name_Not_Found :2012/01/10(火) 14:12:44.37 ID:6w+N2uy0
>>374 evalの本当の危険性はそんな話じゃない!
糞コンサルがコードをevalで検索しただけで
「お宅のサイトのJSはevalを使っていて危険です」とクライアントにチクる
頼んでもいないのに、わざわざご丁寧なパワポで
↓
勤勉で真面目なクラ担当者は、evalが何かは知らないが「JS eval 危険」でググる
↓
俺(弊社、下請け)に電話かけてくる
コレ!
>>406 CSSセレクタで事足りる事を
態々jQueryのセレクタを使えば良いという方がおかしいだろ
CSSセレクタの事を
jQueryセレクタと勘違いする子が発生しちゃうかもしれないだろうが
ベンダに偏らない標準的な用語選ぶ様にしろよ
>>408 落ち着けよ。そんなにカリカリすることかよ
素人丸出しな感想で悪いが $('#hoge a')とかって確かにCSSと同じ指定の仕方だなーと思ってたが ああいう指定方法をCSSセレクタって言うんだ
querySelectorがあるじゃん
対応環境が限られるquerySelecter使ったり プラグインに頼ったりするのは同じくらい両方よくない
XPathおっそいなw よほど特殊な指定の仕方でもしない限り使えなくね?
414 :
366 :2012/01/10(火) 15:25:56.98 ID:???
366です。
色々な案ありがとうございます。
とりあえずある程度の意見を参考に試行錯誤してみたんですが、
実際まだjQueryを触って日も浅いのであまり難しいものが組めず、結局以下で落ち着く形になりました。
案をくださった
>>368 さん、
>>371 さん、
>>378 さんどうもありがとうございました。
それぞれの意見はメモに取ってあるのでわかる日が来たらそれも試してみようかと思います。
$(function(){
$('#nav li').hide();
$('#nav').hover(function(){
$('li:not(:animated)').slideDown('fast');
},
function(){
$('li').slideUp('fast');
});
});
できるまでやらんと力つかんぞ 何ヶ月かかってもいいからできるまでやって報告しろ 妥協しましたの報告はいらん
>>413 querySelectorの方が基本的に遅いぞ
jQueryで使われてるsizzleは知らんがな
なーに言ってんだこいつ 盲目の信者はこええな
jQuryで使うセレクタはjQueryセレクタだと思ったけど違うんだな
jQueryセレクタではCSSセレクタが使えるようになってるというのが正しいのか
>>414 でできてるでしょ。jQuery使うならこれが正しい。
>>417 「XPathよりquerySelectorの方が遅い」と言われたと勘違いしたに一票
なーに言ってんだこいつ 文盲の信者はやべえな
《>413》 XPathおっそいなw 《>416》 querySelectorの方が基本的に遅いぞ 《>419》 「XPathよりquerySelectorの方が遅い」と言われてない ____ / -- 丶、 / ノ ●) ヽ┏┓ .| (●, ,⊃ ノ ┏┛ .ゝ、 `´ .へ ・
どうせググって検索にヒットしたブログを鵜呑みにして querySelectorは遅いからgetElementsByTagNameを使えみたいに思ってるんだろ
>>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');
qquerySelector ↓ querySelector
速度はブラウザ依存だからどっちもアホ
jQueryも昔はXPATH使えたんだよね。取り除かれちゃったけど。
>>424 綴りを間違えるような時点で
いかにこいつの認識が甘いかわかるなw
var obj = $(selectors).not(':animated'); よかCSS:notのほうがって思ったけど実際どっちがいいんだろうな
>>424 Firefox9とSafari5はquerySelectorよりXPathが2〜3倍遅いぞ
しかも簡単なものならDOMセレクタとif文でフィルタリングするほうがもっと早いんだよな
jqueryで書かれたサイトを見ると こんなサイト見てる自分が恥ずかしくて ついついbackspaceキーを押してしまう
結局の所書くXPathやSelector、対象になるHTML次第。
>>431 TwitterとかWikipediaとかamazonとかか。
例えばセレクトボックスを操作したりといった ユーザーの操作を一時的に全禁止するために document.open()で読み込み中と同じ状態にさせてるのですが これはどのくらいのブラウザで効果があるのでしょうか?
Ajax始めたんですが、一度に読み込めるファイルは1個までとあるんですが 例えば3つのtextファイルを読み込みたくなったら 1つ読み込む→完了→次の読み込む→完了とやらなければならないのでしょうか?
>>435 同期なら順にやるしかないけど、非同期なら3つ同時に進められる。
興味あるならdeferredで調べるといい。
>435 お前本当は知ってるだろ 荒らしか?
>>436 ありがとうございます
>>437 いや、本当に知らなかったんです
本に「ココでチェック:非同期通信では1回につき1個しか読み込めないのがルールです」
と書いてあったのでどうしてもやりたい場合どうすればいいのかな?と
そんな意味のわからん本は捨てちまえ、わりとマジで。 本は例題集くらいに捉えて解説は参考にしてはいけない。
> ココでチェック この部分が初心者騙しな気がする
>>438 1回につき1個は確かに正しいよ。一つのxhrインスタンスから複数個同時に読み込むのは無理だから。
ただ、非同期という条件下でxhrをいくつも用意することで、スタートは"順次"だけども、
読み込みは"並行"して行える。
Ajaxやらライブラリーやら本来は中級者向けだと思う というか基礎がしっかりわかるまで後回しにしていい部分
>>441 詳しい解説ありがとうございます
A(go)、B(go)、C(go)、ABC(end)という形にできるんですね。自分がやりたい事がコレだったので助かりました
とういうことはその場合、場合分けということでjQueryを使ったAjaxの記述方法は止めた方がいいということなんでしょうかね?
$.ajax({〜で一くくりになってるので、スタートも終わりも一つ一つやるので
A(go)、A(end)、B(go)、B(end)、C(go)、C(end)としか出来ないと思うのですが
>>443 同期と非同期を少し勘違いしているような。。普通に$.ajaxで書けないことはないけど、
絡みあう形になるから、そこでjQuery.Deferredの登場。これ以上は説明がややこしくなるんで、
最初は簡単な例から自分で動かしてみたら。
>>443 だめだこりゃw
jQueryなんか使わんとAjaxのAからやり直せ
というかまず非同期についてちゃんとイメージできてないだろ
とりあえずAjax 非同期でググってヒーヒーいいながら勉強しろ
jQuery使って楽しようとしていいのはその後だ
了解です、本当にありがとうございました
っつーか最近は入門書からjQuery教えるのか? 大学でもjQuery教えてるとかこの前このスレで見たけど 初心者にjQuery進めたら肝心な理解が進まないだろ
ライブラリは大きなブラックボックスだからな 思った事をある程度簡単に実現してくれるかもしれないが どうやったら思った事を実現できるかの力はつかないな まあそのバランスが大事なんだけどね
ここの住民はHTML5の各APIについての質問にどのくらい答えられるの?
>>449 ここの住人はどんな難しい質問でも答えられるよ
ただしそれが的確な回答かどうかは別の問題だけど
そのときの回答者が数人程度なら、文殊の知恵が出ることもある。 あまりに多いと船山に登るw
>>449 WebRTCに興味を持つ人とかAudioとかな人等様々だと思うよ
まぁ時間帯等によりけりだけど
453 :
Name_Not_Found :2012/01/10(火) 19:44:24.60 ID:6w+N2uy0
>>448 専門科目として教えているなら、それはないんじゃないかな
ピュアJSが理解できなければ、大学で学ぶ意味ないと思うし
自分は専門学校の一般教養として「ほーむぺーじのつくりかた」的なレベルで教えてて、
JSも「こう、ヌルヌル動くのはJSよ」と触れる程度
そうなると、時間もないのでjQuery使っちまいます
JavaができないのにいきなりStrutsから入るようなものか
時間がないとか言い訳過ぎる 一生jQueryにしがみついて生きていける人は少ないだろう jQueryっていうのはあくまでも 『流行り』 なんだから それよりもJSの基礎をしっかり教えた方が何倍もためになる
>>455 一生jQueryにしがみつくってのは自分から学ぶ姿勢がゼロってことだよね。
時間があればコアを教えるべきだけどさ、jquery使ってこんな事出来ますよーって触りでいいんじゃないかな。
後は興味持った奴が自分で調べて、せっかく学校にいるんだから周りの人にも質問できる。これで仕方ないと思うよ。
別にそれがJavaScriptの基礎も含むあくまで『JavaScript』の講義なら文句は言わんよ でも基礎もしっかりできてない人に『jQuery』の講義をするのは問題だと思う
458 :
453 :2012/01/10(火) 20:31:39.09 ID:6w+N2uy0
あー 言いたいことは痛いほどわかります、が 『jQuery』の講義、なんてやらんですよ。HTMLもJSも書いてあるのを配って ここをこう変えるとこうなりますねー楽しーねー、ってやるだけ 所詮一般教養だし、コンピュータの学校でもないし、 そうやって触って興味を持ってもらえれば儲けもん、てレベル 僕らが昔そうだったように、人が書いた完成品の理解できる部分だけ書き換えて ちょっとずつ学ぼうとする子も、毎クール1人くらいいるよ そういう子らには、授業外で教えたりもしてる 激しくスレ違いですねスミマセンもうやめましょう
あーつまり JavaScriptの講義じゃなくて PCに慣れましょうねの講義なわけね それなら話は別
じゅ、じゅっじゅじゅジゅ後ユ害で教える!?
先生そこは私のevalですぅ〜脆弱性ついひゃらめぇ
しまった!! 命の変数が君のスコープ内に漏れてしまった!!
ふむ…やっぱりevalは必要だったな… いや、ここは不要と言うべきか………
また始まったのか?
465 :
435 :2012/01/10(火) 21:57:31.96 ID:???
何度も悪いですが、XMLHttpRequestを使って複数のURLからファイルを読み込む例がググってもなかなか見つからないのですが やはりやるべきではないのでしょうか
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>
>>465 その複数のURLは同一のドメイン?
でなければ、クロスドメインで通信できない場合がある
適当な例を書いておく
// JSONファイルを取得する
var xhr = new XMLHttpRequest();
xhr.open('GET', '
http://example.com/mocha.json ', false);
xhr.send();
return JSON.parse(xhr.responseText);
>>467 ありがとうございますここからやってみます
実行するhtmlと同一ドメインにあるa.txtとb.txtを読み込むのをjQueryの$.ajaxを使ってやっていました
>>466 Dygraphを利用したことがないけど、気になったのはDygraphの引数かな
arg1とarg2の値はどうなってるの?
それとAjaxが原因かもしれないから、successだけじゃなくerrorも入れたら?
>>466 1. var g = new Dygraph(a,b); のみで試す。ajaxを外す。
2. firebugのネットタブからAjaxの結果を調べる。
chromeのコンテント・スクリプトについてです。
コンテント・スクリプトからそのページのグローバル変数にアクセスするにはどうしたらよいのでしょうか。
例えば、youtubeのページはグローバルオブジェクトのytがあります
http://www.youtube.com/watch?v=8k7ZkCIBiYI グローバルオブジェクトですので、↑のページでデバッガを開いてコンソールで「yt」と書いたらオブジェクトを取得する事が出来ます。
ですがコンテント・スクリプトでconsole.log(yt)としても「Uncaught ReferenceError: yt is not defined」と言われてしまうのですが
どうすればytにアクセス出来るのでしょうか。
同様に、jqueryを使おうと思った時にページ側で読み込まれていて、それを使いたいです。
例えばこのページはjquery-1.3.min.jsを読み込んでいます。
そしてコンテント・スクリプト内でwindow.jQueryを使いたいのですが、アクセス出来ません。
view-source:
http://www.nicovideo.jp/my/top
>>471 単純にいうとChromeのContent Scriptが動いているページとYouTubeのページは別物だから
>>471 location.href="javascript:/*ページ側の変数を使うコード*/;";
// or
var script=document.createElement('script');
script.textContent="/*ページ側の変数を使うコード*/";
document.body.appendChild(script);
>>471 お前は荒らしか?
意味も無くニコ動やYouTubeのしかもよくわからない動画ページのリンク貼るなよ
この程度で荒らしとかお前頭わいてんのか
この程度で頭わいてんのとかお前荒らしか
初心者 alert 中級者 console.log 上級者 テストツール
達人 alert
最近はサイトでアラート見かけること無くなったなあ。 うざいから絶滅してほしいね。
何度も本当にすみません。さっきから色々な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回通信するのでどうしても時間がかかってしまうので。本当に何度もすみません
>>480 そのコードでa.txtが「非同期」で読み込める
url変えて三つ並べると、順番にGETのクエリが送られる
順番が保証されてるのはこのクエリ送信の順番だけ
受け取りは相手鯖からの到着順で順不同になる
>>480 3つ取得するんだから通信は3回になる
1回で済ませたいのならサーバ側でその3つを1つにまとめてやるしかない
>>480 一回のリクエストで複数のファイルを取得するのは無理だよ。
リクエストとレスポンは一対一の関係だから、場合によっては
>>483 みたいにサーバ側で一本化する必要がある。
同期であれば時間がかかるのは分かる。
A----|B----|C----|
でも非同期だったら取得が同時に進むからそこまで時間はかからない。
というか、サーバ側で一本化したところで3つ程度のファイル取得であれば大して変わらないかも。
A----
B----
C----| (うえのABCと比べたときに、短くなってるでしょ。これが非同期。)
質問の意図がよくわからないけど、
・リクエストとレスポンスは一対一の関係
・この場合は普通非同期で3つ同時に読み込むのが普通
・非同期を簡単にまとめる手法として Deferred がある
ネットワークをほんの少しでも理解していればわかるはずなんだが ネットワークはキャッチボール。3つも一度に投げれない受け取れない
486 :
480 :2012/01/11(水) 02:03:15.11 ID:???
>>482-484 これ異常無いほどの感謝です、助かります
自分としては複数のリクエストするときの記述方式がわからなかっただけで
スレッドをムダに消費して迷惑をかけました
> 自分としては複数のリクエストするときの記述方式がわからなかっただけで 最初からそれ言えよ くだらん説明しちまったじゃねーか
iframe を 3つ用意しておいて、親で受け取れば良いよ。
誰も具体的なコード教えてあげてなくてワロタw
関数本体からはパラメータ宣言が優先されるというルールがあるみたいですがパラメータ宣言って何ですか?
>>490 var a = 0;
function test() {
var a = 1;
alert(a);
}
test()の中が関数本体のこと
外側と内側で同一名の変数aが宣言されているときは内側が優先される
なので、アラートされるのは1
>>491 ありがとうございます。
それの事だったんですね。
>>490 >パラメータ宣言って何ですか?
肝心なことを書き忘れてた
パラメータ宣言ってのは、varやfunctionのことね
>>490 パラメータだから関数の引数のことを言っているんだと思うが、
元の文章を読まないことには何のことだか分からない
最終手段を最初に書いとくと 動く物を自分で作ればいい
急に過疎
そのまま写せばいいんじゃないの?
まともに使えんようなプラグイン使おうとするなよw
500 :
480 :2012/01/11(水) 11:38:45.20 ID:???
>>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使うにしても、元のコレがわからないので・・・。
>>498 そのまま写すと、pagerは初期状態の行しか表示できません。
>>495 tablesorterはわかった
だけど、pagerなんて名前のはいくつもあってどれかわからない
それのリンクも貼って
それと憶測だが、新たに行が追加されたらpagerの内容を更新させてやらないといけないのかも
503 :
495 :2012/01/11(水) 13:43:58.61 ID:???
>>500 jQueryよく知らんかったが非同期がデフォなんだな
jQuery使わんでもいいような気もするがそれでいいんじゃね
>>503 まず10日は自力で調べなさい
それでもわからなかったら一旦諦めて別の方法を10日模索する
それでもダメなら聞きに来なさい
jQueryってどこまで対応範囲広げるんだろう AudioとかVideo関係も需要が高まればサポートするのかな つうかjQueryだけの質問はもう専門スレに行って貰った方がいい気がする 今はほとんど機能してないけど時期まともになるでしょ
>>500 なんか見てるだけでムズムズしてくるな
効率悪すぎ
>507が本来0.1秒もかかる処理を0.01秒にしてくれるらしいよ
動作中のsetTimeoutとsetIntervalを全て削除する方法を教えてください
jQueryはここで質問していいが、制作依頼は勘弁してほしいな JavaScriptの基本を学ばずにjQueryに入って質問する人はとか
>>500 は製作以来に入るのか?
過去にあった例だがanimateで一つの要素を順番に動かすのにsetTimeoutとsetIntervalを使ってるけど違和感感じての質問は良しと思うが
だから答えたくない奴は黙ってればいいだろzk
全員黙ってると質問がどうしてスルーされたのかわかんないんじゃない
518 :
512 :2012/01/11(水) 15:09:02.66 ID:K19RhCSN
>>513 制作依頼はいいすぎだったかもしれないが、回答しても理解されずに質問がループ状態で質問者にその意図がなくても制作依頼になるパターンを懸念してる
>>500 は制作依頼ではないが、このまま質問を続ければそうなる可能性はある
>>500 は俺もいいとおもうけど
>>507 みたいなののせいで泥沼っ・・・!泥沼っ・・・!状態に陥るんだなーと
jQueryCSSの質問で申し訳ないんですが、以下のコードで先行実装CSSのbox-alignやbox-packを使って
IEなどに対応させたいなどと思ってるんですが、どうもこのコードでやってもできないようなんですが
何か問題があるんでしょうか?
$(function(){
$('body').css({
'display':'box',
'box-align':'center',
'box-pack':'center',
});
$('#test').css({
'background':'#C00',
'width':'300px',
});
});
http://jsbin.com/asapur/edit
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でデバッグすると、そのようなメソッドはないというエラー
>>500 はスルーされてるんだかされてないんだかよくわかんねぇな
>>500 だから俺はfor(){アジャックス}でいいんじゃねーの?と
たぶんこれ以上の方法は思いつかない。そして無いと思う。
>>523 [0]はjQueryオブジェクじゃなくなる。
var text = $('value', xml).eq(0).text();
今回の例だとDeferred関係無いだろ
えっ
なに!?
>>500 とりあえず、コードには問題はない
期待通りに動作するのならそれでいい
そもそもどんな挙動を期待しているのかはっきりしないので何とも答えにくいな
Deferred()使ったりそれより早くできるんだったらそのサンプル程度に書いてやりゃいいのに
Googleのplusone.jsを読み込むときに
<script src="
http://apis.google.com/js/plusone.js ">{lang:"ja"}</script>
と記述されていますが、コード側で{lang:"ja"}はどのように読み込まれているのでしょうか?
普通に自分自身を読み込んでいるscriptタグを探して読み込んでるだけでしょうか?
ソース追わないと分からないけど、取得方法はこんな感じ。 ・SRCが固定だからスクリプト要素の集合から特定できる ・実行中に最後のスクリプト要素を参照する方法があるが、あれは不安定。 ・いずれかの方法で取得してparseJson
>>535 横からだけど不安定な理由を押して欲しい。
script[defer] の話?
>>536 それもあるし、あの手のコードは一番最初に置かないといけないでしょ。
そんな制約がある以上
>>535 の前者の方法には勝てっこない。
それからブログパーツ全般の話になるけど、例えばスクリプトタグにIDを振ると
そのサイト上で一つのIDを占領してしまうことになる。これはもうひとつスクリプトタグを追加して
そこで var hoge_config={} みたいにしても結果は同じ。
話を戻して、+1 のコードなら俺はスクリプト全体の集合から固定のSRCを使って要素を特定する。
これならIDも変数も何一つ占領しないで済む。実際にGoogleが中で何やってるかは知らんけどね。
いい忘れたけど、2つ目のスクリプトで関数を使う方法もある。 これもIDとか変数を使わないから安全。 <script>plusone.config({...});</script>
jQueristerはいい加減目障りだから消えろよ 専用スレがあるだろ
(function($) { /* 関数本体 */ }) この式が無名関数への参照を結果として返すとはどういう意味でしょうか?
>>537-538 最後のスクリプトを参照するコードを一番最初に書かないといけない理由はないよ
setTimeout のコールバック関数内に書くような非同期処理は駄目だけど、スクリプトコード内のどこに書いても動く
それからscript要素のid属性は HTML4, HTML5 で認められてないのでブラウザ依存だね
>>539 両方人を表す〇〇istと〇〇erを重ねるのって変じゃないか?
jQueristかjQuererでいいんじゃねーの?
>>540 こういうこと
var f = (function($) { /* 関数本体 */ }); // 括弧はいらない
>>541 ほんと?これの後に取得してみて。
document.body.appendChild(document.createElement("script") );
このスレの住民は本当に他人のレスの細かいとこ突いて喧嘩仕掛けるの好きだな 質問じゃないレスはみんな無視すれば平和になるのに
>>544 さすがにこれは揚げ足でしょ
最後から2つめの要素を取得すればいいってことは誰でもわかるし
>>546 DOM操作なんて当たり前だし、モジュール分けしたスクリプトを読み込むとか日常茶飯事。
あのコードは最初に置くというルールがないと成り立たない。ゆえ不安定と言われるんじゃないの。
>>547 モジュール操作も順番を間違えると動かないはず
例えば、jQueryプラグインはjquery.jsを先に読み込まないといけないから不安定だといえる?
jqueryっていうかjavascriptのライブラリ総合スレがあってもいいんじゃないかと思う
src 先をハードコードして指定する方が不安定と思うけど。
設計の問題と思うか、不安定と思うか、の違いじゃない? いずれにしても「一番最初」でなくても動くね
>>550 プラグインは本体の後に読み込むというルールがあるよね。それで、
>>535 の
後者の方法にも
>>544 で示すように最初に実行しないといけないというルールがある。
でも、
>>541 はそのルールが存在しないと言ってる。そのことに対して、反対したわけ。
そもそもプラグインは棚違いでしょ。
付け足すけど、
>>535 の後者はクロスブラウザでないコードを書くようなもんだよ。
スクリプトタグを動的に追加することを"揚げ足"だと言われたたけど、
そうしたコードが実行されることもあり得るんだから、その時にあのコードは
動かないことになる。
こうやって動かないケースが発生しうることが簡単に推測できるんだから
不安定と言われても仕方ない手法だと思うね。
558 :
Name_Not_Found :2012/01/11(水) 20:00:24.69 ID:wnh1trwj
>>558 asyncだったらなおさら使えないな。
>>557 それなら、URL を参照する方法はなおさら不安定だな。
>>560 もちろん俺もSRCによる特定が不安定であることは十分承知してるが、
あの条件下でより安定な方法があるなら示してみて。
>>561 「なおさら不安定」と言ってるんだから…
>>562 先頭に配置するコードよりSRCによる特定の方が不安定ってことでしょ?
>>558 を見ると未だにURL変わってないけどね。
それと、コードがキレイになる効果もあるんじゃない。好みの問題だけどねえ。
<script type="text/javascript" src="hoge">
{nane: "taro", city: "tokyo"} // 一つでまとまる。
</script>
もう晩御飯だ。いてきます。
ブラウザのブックマークレットに入れてあるjavascriptで、 いまみているページが「空白のページ」で(URLになにもない初期状態の) あるか判定したいのだけど、どうすればできますか? location.hrefではどうもダメなようです。
すべてのWeb板みてきたがjQuery専用スレなんてなかったぞ
567 :
564 :2012/01/11(水) 21:03:26.72 ID:???
>>566 最新のSafari・Chromeでチェックしてます。
最新のIE・FF・Chrome・Safariは対応したいです。
一般的には常識とされている、 真実は一つだけ 怒りは自然な感情 戦争・テロは無くならない 死刑には殺人の抑止力がある 虐められる側にも虐めの原因がある 自己チューな人間ほど自己愛が強い などの間違いを解説中 感情自己責任論
569 :
534 :2012/01/11(水) 21:22:53.04 ID:???
>>535 普通に2つのscriptを使ったほうが良さそうですね。ありがとうございました。
>>534 質問と関係ないけど
こういうのはevalでパースしていいケースだよね
Googleさんがどうしてるかが気になるところだ
572 :
Name_Not_Found :2012/01/11(水) 21:36:33.55 ID:wnh1trwj
>>564 document.URL=="about:blank"
でいけるかなーと思ったけど、空白ページの時
webkitはdocumentはあるけどdocument.URLは空っぽみたい
ので、こいつらを場合分けしてあげれば、まあまあ出来るんじゃないかな、と
>>564 空白のタブのURIは標準化されてないから実装依存。
全ての実装を調べて場合分けするしかない。
if (uri === 'about:blank' || uri === 'chrome://newtab/') {
console.log('blank tab');
}
Opera 11.60 はコンソールが効かないのでよくわからん。
574 :
573 :2012/01/11(水) 21:56:41.49 ID:???
Opera は abount:blank でも新しいタブを生成できるが、Spped Dial はDOMを生成してないっぽいな 故に JavaScript で操作できない
>>571 普通は JSON.parse か new Function を使うと思う
576 :
564 :2012/01/11(水) 22:37:06.38 ID:???
>>572 >>573 ありがとうございます。
標準化されてないっぽいなーと思ってたら、やっぱりですか。
nullやらundefinedでlocation.hrefチェックしてましたが、
意味がなさそうだったので。
ブラウザごとの仕様を調べなおしてみます。
あ、Operaは諦めますw
>>575 JSONなら{"lang":"ja"}こう書かなきゃならんし
new Functionやscriptタグに読ませて実行するのはevalと大差ないよね
>>576 opera関係者さんですか?ステマ乙です
jQueryでHighslideみたいな拡大効果できるライブラリありますか? 「お前が作れ」っていうのは無し
ベンダープレフィックスを指定して使うCSSプロパティを.cssで使う場合ってどうすればいいんでしょうか?(jQuery) 普通に-webkit-とか指定しても効かなかったんで何か方法があるのかなと思って聞かせてもらいました。
jQuery の質問が多いのは、単に使用者が多いだけでなく、使用者の学習意欲が低いからなんだと思う今日この頃。
>>580 -moz-aaaa => MozAaaa
-webkit-aaaa => WebkitAaaa
-o-aaaa =>OAaaa
-ms-aaaa =>MsAaaa
>>582 ありがとうございます。
教えていただいてこんな事言うのも失礼なんですが、結果は得られませんでした…。
良かったらその情報が載ってるサイトなどがあったら教えていただきたいです。すみません。
>>585 plusone.jsがまた別のスクリプトを呼び出すよ。URLは長いから書かないけど。
>>580 URLは
>>586 なんだけど、lower camel case だから
>>582 は間違ってるね
-moz-hoge => mozHoge
-webkit-hoge => webkitHoge
-o-hoge =>oHoge
-ms-hoge =>msHoge
589 :
588 :2012/01/12(木) 02:15:45.94 ID:???
ごめん、やっぱ訂正
>>586 も Media Queries を指してるからURL間違ってるね
正しいURLを探すのはめんどいんのでパス
>>588 -の後は大文字だぞ、インスペクタ覗いてこい
591 :
583 :2012/01/12(木) 02:21:15.47 ID:???
度々ありがとうございます。 jQueryはCSS3プロパティ実装済みといっても結構気難しい所があるんですね… Google使っていくら検索しても情報が少なすぎて参りました。 とりあえず今は公式で公開してるCSSHookを勉強してます…。
>>585 「安全」の意味合いが違う気がする。
コードの汚染よりもセキュリティ面で問題視されてると思う。
<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+"]");が間違っていると思うのですが、 [と]で不具合が出ていると思うのですが、どうすれば動きますか?
これは eval のちょーわるい見本w
>>594 プロパティ名に角括弧を含むプロパティはドット記法では参照できない
document.form['lang[0]'] というように角括弧記法を使って文字列で指定しなければならない
そしてこの角括弧記法を使えばevalを使う必要はない
前者は document.form['lang' + i] 後者は document.form['lang[' + i + ']']
そもそも同じ種類のチェックボックスに違うnameを指定するのはなぜ
無理やろ
name 属性に [] 使うのって PHPer だよね。 JavaScript が本職じゃないにしても、その発想はないと思うぞ。
>>594 obj = eval("document.form.lang["+i+"]"); は obj = document.form.lang[i]; と同じ
わざわざeval()で評価する意味がわからない
eval()が話題だからって無理に使わなくても
600 :
583 :2012/01/12(木) 03:27:57.15 ID:???
>>593 あぁぁあぁ…orz
完全に頭の悪い書き方してました・・。
かなりの勉強不足ですね。。本当にすみません、そしてありがとうございました。
$('#element').css({
"webkitBoxShadow":"0 0 10px #000",
});
>>593 きっと「-webkit」で検索かけたんだろうな
Googleはハイフンから始まるワードだとそのワードを含めない結果を返すから
-webkit が含まれるページは、ほぼ見つけられないわけだ
602 :
583 :2012/01/12(木) 03:33:35.16 ID:???
いや検索するときはjQuery+vendorprefixなどで調べてました。 目的は、IEとかでまだ実装されてないCSSを実装させようと思ってたんです。 transitionとかアニメーションとかですね・・。 jQueryの1.4あたりでCSS3はそれぞれインプットされてるって聞いてたんで
夜更かしは美容に良くないよー。
グローバル変数ならwindow["name"] ローカル変数ならarguments["name"] で取得できるのですが どうやら後者は一部の新しい環境では動かなくされているようで ローカル変数でも前者のようにするにはどうしたらいいのでしょうか?
605 :
594 :2012/01/12(木) 09:36:18.91 ID:???
みなさまありがとうございました。。 チェックボックスの値を取得する方法を検索して試行錯誤してました。 そこにevalを使っていたものでして、evalは使いたくないので、 あとでevalを使わない方法を調べる予定でした。
あほすぎる
>>604 オレの知る限り、ローカル変数のベース(グローバル変数ならグローバル)オブジェクトに
アクセスする手段はない。ローカル変数の場合、前者のようなアクセスはできない。
arguments["name"]は何かの勘違いか?
昔はargumentsオブジェクトからローカル変数にアクセスできてたのか?
今でもバージョン指定すれば使えるよ
evalを濫用すると任意のスクリプトを実行されてしまうのは 理解できましたが、そのことがなぜ一意に危険視されるのかわかりません DBなどにアクセスする可能性がある場合以外に クリティカルな危険性があるものなのですか?
>>610 個人でやるなら好きにしろ。必要ないけどなw
クライアントが別にいるならフォーマットを厳守しなければ、
意図しない動作が起こることを告げておけ
仕事なくなるけどなw
JavaScript エンジンそのものに特定コードに対する脆弱性が存在したり、 Ad○be 製品の様な脆弱性だらけのプラグインに不正なファイルを読み込まされたり、 定期的にページ内の入力監視されて外部に送信されたり、Cookie 盗まれたり。 eval はインタプリタを呼び出すわけで、JavaScript 全般にまつわる脆弱性を伴う、という話。 jQuery にもちょっと前まで、XSS の脆弱性があったから、古いバージョン使ってると 場合によってはそのページも危ない (レアケースだと思うけど)。
613 :
610 :2012/01/12(木) 15:00:20.01 ID:r5y39zoq
>>611 自分は作り手ではなく、ただの経理屋なんです
週末に個人的に勉強してるレベルです
私が知るかぎり、evalをユーザに使われることでサーバが脅威にさらされるのは
いわゆるウェブサービスのような、サーバサイドと連動するごく一部のウェブページであって
その他大多数を占める静的なページでは、危険と言うほどの問題はないのではないかな
と思っているのですが、やっぱり素人の安易な発想なんでしょうか
また、例えば先述のGoogle+1のJSONをパースするような場合でも
(function(){
var json = /*<script>要素内のJSON文字列*/;
var dat = eval(json);
/* APIに向けてdatの内容を投げる */
})();
と書いたところで、このevalにユーザスクリプトが触れることが出来るものですか?
614 :
610 :2012/01/12(木) 15:02:34.46 ID:r5y39zoq
>>612 レスありがとうございます
> 定期的にページ内の入力監視されて外部に送信されたり、Cookie 盗まれたり
これは、例えば私が悪意あるスクリプトを実行したとして
私以外のコンピュータの入力監視やCookieの盗聴ができてしまう
ということでしょうか?
>>587 それ見てみるとコード内にevalは存在するね。見た感じJSON関連かな。
肝心の
>>534 のパラメータをどうやって読んでるかだけど、
多分これ。
try{n=(new Function("return ("+g+"\n)"))()}catch(p){}
>>575 ちゃんのエスパーした通りnew Functionのようです。
evalよりはマシって事なんですかね。
>>613 Webが与える脅威なんか本島に脅威と言えるものは何もないから何でも使えばいいよ
>>614 入力監視や Cookie を盗む行為なんかは、ブラウザのページ毎に
行われるものだけど、「悪意あるコードの内容」如何では、
Gumblar みたいに、それこそ何でも実行されてしまったり。
>>472-473 ありがとうございます。
以前から変わってないみたいで、いまだに直接アクセスは出来ないんですね。
googleにまだバレてないすごいトリッキーな事をしているならともかく
こんな簡単な方法がずーっと使われてるんだから、公式でアクセス出来る手段提供して欲しいなー
619 :
610 :2012/01/12(木) 16:54:22.82 ID:r5y39zoq
>>617 つまり、書いたJS自体には問題がなくても
それとは全く別の方法でサーバに侵入され、Flashなどの別のコンテンツを書き換えるなどの
手法により攻撃性を持ったプログラムが、そのJSを利用する可能性がある
つーことですかね
なんか話が壮大になってしまいましたね
みなさん色々ありがとうございました
また少し勉強してわからないことがあったら質問させて頂きます
>>614 cookieを盗“聴”ってのも変だな。
壮大って言っても、実際にあったことで、それも長期に渡って大流行したことなんだよな。
>>615 マシとかじゃなくてevalは将来削除されたり
一部の環境で非サポートになるかもしれないから
623 :
604 :2012/01/12(木) 19:06:21.44 ID:???
すみませんevalはできれば使いたくないのですが 他に方法はないでしょうか?
>>622 どこソース?
ECMAScript5 の strict mode でも非推奨にはなってないけど。
>>622 うそつけ。
一部の環境で動的なコードが制限されるとしたらnew Functionだって同じ事だろ。
new Functionと同じってことはない。スコープの差はデカい。
setTimeout に文字列としてコードを渡したり、innerHTML 内に属性としてコードを書いたりできるし。 仮に eval だけ廃止しても意味ないよな。
628 :
Name_Not_Found :2012/01/12(木) 20:51:06.01 ID:g3N5dQ30
IE9ではtry-catchで例外処理する仕組みに仕様変更はありますか? javascriptの問題なのかわからないのですが ブラウザをIE8からIE9に変更したところ例外処理が実行されるべきところで例外処理されず ActiveXが正常に動かなくなります。 ActiveXコントロールのプロパティに値を設定するのですが、 範囲外の値が設定されたらThrowErrorでエラーを返すようにしています。 例えば値が0/1以外のときにエラーを返すプロパティで以下のようにすると IE8までは例外発生のダイアログが出ますが、IE9では出ません。 try { OCX名.プロパティ名=2; } catch(e) { alert("例外発生"); } どなたか、対処方法をご存知でしたら教えてもらえないでしょうか。
>624 勉強しろ >625 実装において大きく違う
ソースを訪ねて、返ってきた言葉が「勉強しろ」だよ…
>>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() で使っているコードを書いてくれないと何のアドバイスもできない
>>623 どんなコードなのか、なぜevalを使うのか教えてくれ
じゃないとこっちもわからん
>633 そう思いたい気持ちは分かるよ 反論したくても知識がなくてできなくて悔しいね(笑
>>534 ついでにわかったんで書いとくけど、
script要素を総当りしてsrc属性で照合する方法をとってましたわ
>>631 MDN-arguments
JavaScript 1.1 および JavaScript 1.2 で利用可能だった次の機能は削除されました。:
関数の各ローカル変数は arguments オブジェクトのプロパティです。
たとえば、もし関数 myFunc が myLocalVar という名のローカル変数を持っていたなら、その変数を arguments.myLocalVar として参照できます。
>>635 なんだ妄想だったのか。
あんまりネット上で間違った知識広めんなよ。
arguments.calleeと勘違いしてるに1票
>>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; // もしかして、こういう感じの指定なのかな?
>>641 こうじゃん?
function myFunc() {
var myLocalVar = 1;
myFunc2(arguments);
}
function myFunc(args) {
alert(args.myLocalVar);
}
よく考えたら
>>643 も無意味。
function myFunc() {
var myLocalVar = 1;
return arguments;
}
function myFunc2(args) {
alert(args.myLocalVar);
}
var args = myFunc();
myFunc2(args);
eval使ったらJSが本来持つ危険性より高い危険性が生まれると勘違いしてるやつ多そうだな 上の質問の奴もそんな感じだろ。eval関係ない話になってるのに気づかずに納得したっぽいな
検索フォームに文字を入れてフォーム下ににょきにょきって感じで結果出てくるようなことってjQueryで可能でしょうか? 可能であればサンプル等あるサイト教えてください よろしくお願いします
jQueryUIとか
var a1 = 1; var a2 = 2; var a3 = 3; forを使って a1〜a3の中身をalertする方法をおしえてくだしあ 偉い人 ルールが分からん これじゃ出ないんですけど for(var i=1;i<=3;i++){ alert(a.i); }
そこで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); });
evalなんていらねぇ var a1 = "1"; var a2 = "2"; var a3 = "3"; for (var i=1; i<4; i++) alert(window["a"+i]);
>>650 a1~3の定義場所がglobal以外の場合はどうするの?
>>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" をアラート
>>650 本来は配列を使うべきだが、この場合はeval系統の出番だな。
(function(){
var a1 = 1, a2 = 2, a3 = 3;
// hmhm...
})():
いや、そもそも、配列使うべきだから。 実装がおかしいから。
>>651 ぐろーばる以外?
そんな時は配列使うんじゃねーか。当たり前だろ?
じゃあじゃあぼくはnew Functionで!
>>654 配列いがいにないのかえ?
他の言語だったらできるんだが(・´x`・)くそやん
>>657 配列使って実装できないお前が(`ェ´)ピャー
お前らありがとうぴゃーヽ(`Д´)ノ
>>660 argumentsじゃなくてarguments.calleeだがな
662 :
610 :2012/01/13(金) 00:59:12.51 ID:2oiSMuyR
>>645 JS関係ない話になっちゃったことは理解しましたよ
サーバに接点がないのなら、どんなにズルズルな、たとえば
<textarea id="ta"></textarea>
var ta = document.getElementById("ta");
eval(ta.value);
なんてこと書いちゃったとしても
そのブラウザのなかで出来ることしかできない
て、理解であってますよね?
ばかばっか
>>662 あってる。ブラウザでJSができることしかできない。
うまく説明できないけど、邪悪で悪魔でやばいんだよ! きっと
>>622 セキュリティーホールも知らないの?ブラウザのページ上でしか出来ないはずが、
それを通り越すことがあるんだよ。
>>664 みたいな意見は鵜呑みにしないほうがいい。
>>666 どういう理屈でevalがJSができることを超えてセキュリティホールになるんだよw
evalはJSを超越しちゃうのかよwすごいなw
> それを通り越すことがあるんだよ だからそれを具体的に説明してみ、セッションハイジャックとか言ったらお前にeval語る資格なんてない
>>669 だからそれはJSの脆弱性だろw evalじゃねーよw
>>670 >>662 は手段はどうであれ意図しないコードを実行できる仕様にある訳でしょ。
それでもブラウザ上でしかコードは動かないから大して問題じゃないと。
その段階でevalがどうとか呆れる。というか、相手することないね。すまんよ。
>>662 > そのブラウザのなかで出来ることしかできない
だから安全、ということにはならないけどね。
ウェブの人は基礎が吹っ飛んでる人が多いからスレの流れがこうなるのも仕方ない。
>>674 サーバーサイド側で、たとえば
<textarea id="ta"><?php echo($_GET["code"]) ?></textarea>
こう書かれてたら話は別だぞ?
今は
<textarea id="ta"></textarea>
これだけの話をしてる
>>676 確かにレイヤーを分けて考えれない吹っ飛んだ人が多い
>>676 >>662 は「仮に次のような例で任意のコードを実行できるとしても、
ブラウザ内で動くだけだから大きな問題ではない」って言ってるよね。
このどこを掻い摘んで eval を利用して外部から任意のコードを埋め込むってなるわけ。
問題は任意のコードが実行されることなんだから、その段階でevalがどうとか言ってると、なんか頭おかしいみたいだよ。
値を埋め込む方法はあるけども、それは今回の質問とは関係ないよね。まったく勘違いしてるよ。
evalを使いたいひとはevalで何がしたいのさ。それはevalにしか出来ないことなのか?
>>594 ,649のコードを読むと頭の弱い人なんだなと思う
>>676 evalの是非を問うてるんじゃなくて意図しないコードが動くことについての質問だろ。
>>681 悪いけどこれ以上は無理だわw分かってくれるよう説明したつもりなんだけどね。
>>682 自分ははまちちゃんの考えに納得して基準に使ってるから
合わせて「セキュリティ過敏症」っていう記事も読むといいよ。
これでも、昔はeval死ねとか思ってたけど。
すでに話はJavaScriptの脆弱性に移ってるんじゃないのか? たいした危険性ないよね?
移ってない
自分のサイトがDDoS攻撃される可能性があるってことだよ
横レス。
>>681 記事読んだけど、セキュリティについて全く認識不足だな。
evalとか気にして縮こまるよりは面白い物作ろうよってこと 商用サイトとか作ってる上級な人はこんなとこ見てないし。え?みてる?
>>687 初心者向けの記事だから足場は別の人がちゃんと管理してるのが前提だよ
鯖のrootもってるような人向けじゃない
>>691 JavaScriptの話じゃないのか?
>>641 どこからというより、
変数名そのものを値として扱えるってことじゃね。
function myFunc() {
var myLocalVar = 1;
var varName = 'myLocalVar';
arguments.[varName];
}
みたいな。
コード追いかけるの大変だろうな…
>>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()が不要か必要かの話題しかない
今になって
>>142 で笑ってしまったじゃないか。
>>696 arguments.myLocalVar
は
arguments['myLocalVar']
と同じだろ?
>638=639 自分が納得できなければとことん人をおちょくる頭の悪い奴だな たぶんアスペか何かだろうからもう触らんでおこう
700 :
604 :2012/01/13(金) 07:25:37.60 ID:???
>>698 のように変数名の文字列から変数を特定するのを
ローカル変数でもやりたいのです
700になりました。テンプレに関する大規模な変更の提案あれば今どうぞ。
702 :
610 :2012/01/13(金) 08:52:16.79 ID:2oiSMuyR
>>681 おはようございます
文章の書き方が悪かったかも知れません
>>662 で「サーバに接点がないのなら」と書いたのは
サーバ側にクライアントサイドプログラムに対してのゲートウェイが用意されてないのなら
的な意味です
どれだけJSで暴れた所で、影響を及ぼせる範囲は
その実行者のコンピュータの中だけですよね?
サーバ側に何も用意されていない→完全に静的なHTMLのみのサイトということ。 今はそういうサイトは非常に少ないんじゃないかなと。
>>702 暴走したJSで別の脆弱性を付けば被害はもっと広くなる可能性はある
まあ別にそれはプログラマーが危惧しなくてもいいこと
ブラウザやその他のソフトの仕事だし気にしてもどうしようもない
ブラウザ外アプリの形のJSなら多少は責任あるかも
>>700 どうしてそんな変な実装なの?
配列とか、ハッシュとか使って組む事できないの?
>699 そう思いたい気持ちは分かるよ 反論したくてもソースがなくてできなくて悔しいね(笑
それは提案とはいわない
>>703 フリーのレンタルサーバーなんかは全部そうじゃね?
それでやっぱり、テンプレの「提案」は具体的なテンプレ用のレス案として出してくれないと 採用も却下も議論が難しいので、そこはよろしく。そういう検討方法以外の検討方法がいいと いう方いらしたら、とりまとめに出てきていただけるとうれしいですけどね。
デバッガ以前にエラーメッセージも見てなさそうな質問があるから 各ブラウザのエラーの確認方法書いといて。
>>712 だからテンプレ文案にしてくれないと検討できないって。まずは各ってどのブラウザとどの
ブラウザよ。どれくらいどういうふうに書けばいいの? 昔のテンプレにはMozillaのエラー
コンソールの出し方載ってた時期があった気がするけど、なんで無くしたんだっけね?
>>1 の【エラーメッセージ】のとこを次のように差し替えるくらいでどお。
【エラーメッセージ】ブラウザのエラーは必ず確認し、有無および有ならメッセージ内容を書く。
それいいなあ。「eval論争のような言語自体の思想に関わる話題はJavaScriptスレへ」とか。 EcmaScriptスレとかもあるんだけどどうするかね。
eval議論禁止というより議論の仕方な気がするなあ 煽り禁止とか
>>715 そこは今のところ要らない気がするな
質問→スレ違いの話題ばかりでスレの存在意義がまともに確立できてない
スレを立てた人は確か「ここよりも気軽にJavaScriptの話題が出来る場所が欲しい」だったと思うけど、
今は多分ここにいるんじゃないかな
>>1 のテンプレが全く使われてない。
回答者が「テンプレつけてね」と指摘しないならなくしてもいいんじゃないかと思う。
残すなら守って貰う何かが必要かな。良い文案はまだ思いつかないけど…。
█
>>717 そうだねえ
煽りレスもそうだし、それに脊椎反射しちゃうのもかな
明らかに理不尽なレスなのは、見てる諸兄もわかってることだから
あまり熱くならんでスルーしてくれれば、と思う
>>722 うん。
IE8までとIE9でエンジン変わったらしいんで分けた方がええ気もするけど
MSDNは全然整理されてないし
そもそもそのリンク誰も見てないようだしどうでもええな。
ノード名を変えるにはどうしたらよいのでしょうか nodeName="a"でいいと思っていたらnodeNameはreadonlyだし。 ノード名以外の、スタイルシートとかzindexとかはそのままにしたいので 新しくノードを作って差し替え って事はちょっとしたくないです。
ES.nextのProxyでreadonly外す
>>727 nodeName だけ変えて実体が変わらない状態で大丈夫?
結局、作り直して属性を移植する方が問題が少ない気がする。
<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()は使うべきでないならこのソースの場合どのように書きなおすのですか?
>>731 参照するから Good Parts のページ数および節の名前も書いて欲しい
>>731 この場合は Number() がベターかな
>>731 >javascript The GoodPartsに載っていましたが
マジですか?
>>731 過去にまったく同じ質問してるな。
good partsに関する質問を淡々と繰り返し
回答に全然反応しないのが前にいた気がするが帰ってきたのか
>>731 eval使ってる理由が分からん
昔は使わないとできなかったのかな?
>>736 良く覚えてるなー。
コピペ荒らしじゃないか。
t3.value = eval(t1.value) + eval(t2.value); ↓ t3.value = (t1.value - 0) + (t2.value - 0); これでいいんじゃね?
$(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入れてもダメでした。
毎度お馴染みになのが、書店でJavaって書いたとこに Javascriptの本が置かれているな。 一般のクレームなんて無いに等しいだろう。 書店に来る人と店員の中でJavaとJavascriptの違いを知ってる人 なんて殆どいないのではないから問題にならんのだろうな。 みささんは、クレーム付けますか?
わたし本名みさだけどつけるかな。「これここじゃないよ」って
amazonでも間違ってたりするから困るw
JavaとJavascriptはメロンパンとメロンくらい違う。
まぁ、両方食い物(プログラミング言語)だけどなwww
JavaとJavascriptは全然文法が違う。
>>747 マジかよ。
>>744 クレームするのはケツの穴が小さすぎると思う
書籍になるすべてのジャンルに精通することなんて無理じゃん
そこは、僭越ながら助言差し上げるのが良いのではないか
似た名前だけど別物なのでこっちに置いた方がより良いですよ、と
そんなの黙って移動しておいてあげりゃいいじゃん。
>>750 スレ違い気味ですが、勝手に移動したら店員が管理できなくて困るでしょう。
一言いって店員に任せるべきだと思いますよ。
指摘とクレームは別物だと思うんだ。 指摘とクレーム一緒に表記してる所多いけどね。
753 :
Name_Not_Found :2012/01/14(土) 00:30:57.52 ID: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で取得できて動いてます。
var json1 ='{"name":'+document.form.nn.value+'}'; これの間違い? まぁこれでもJSONだけど var obj = {'name':document.form.nn.value}; // JSONにするobject作成 JSON.stringfy(obj); // JSON化 とした方がより良いかもね
とある<div>にドロップされたローカルファイルを別の<input type="file">に入力されたことにできますか?ChromeかFirefoxで
>>755 それ、JavaScriptじゃなく、HTML5でできる
FileオブジェクトもFileListオブジェクトもどちらもread only
>>754 いいえ
var json1 ='{"name":'+document.form.nn.value+'}';
でなくvar json1 ='{"name":document.form.nn.value}'; です。
JSONの{プロパティ名:プロパティ値}で
プロパティ値に変数って使っていいのでしょうか?
その辺がよく分かりません。
>>758 プロパティ値に何らかの値を使うのはOKだけど
その書き方だとプロパティの値入んないでしょ
PHP 使いにも、いい加減なの多いな。 そもそも言語自体にバグや脆弱性が多いけど。
Ajaxでテキストを読み込むとき、ファイルが更新されてても更新されない場合があるので url: 'fuge.txt?hoge='+Math.random(), とやっているのですが、これってもしかしてそのページで何回も取得する時メモリヤバイ事になりますか?
>>758 PHPでどのようなパーサを使っているのか知りませんが、不正なJSONですね。
JSON.parse('{"name":document.form.nn.value}'); // SyntaxError: Unexpected token d
>>762 IEなら一時ファイル保存してるフォルダを覗いてみ
大量に貯まっていくから
765 :
762 :2012/01/14(土) 02:55:46.63 ID:???
ヒイイイィ
何か対処法は無いのでしょうか?
url: 'fuge.txt'だけだと、1.01読み込んだ後このtxtが更新されてver1.01から1.02になっても
ver1.01のままなんですよね。出来るだけリアルタイムで反映させるために
>>762 みたいな方法にした訳なのですが
IEの仕様がおかしい。 本当IE死ねばいいのに。
リアルタイムって高頻度に例えば1秒間隔にfuge.txtが更新されるとかなの? 1日一回くらいならRandomじゃなくて現在時刻でもつればええやん
>>762 // 現在時刻を数値で取得して1時間分で割る、getTimeはミリ秒単位なので1000 * 60 * 60 で1時間。toFixedで文字にする
'fuge.txt?' + (new Date().getTime() / 3600000).toFixed()
これで1時間毎に見てくれる
>>758 jQueryではブラウザ自身がJSONのパースをサポートしていないと
(new Function("return " + json1))() みたいな感じでパースされる。
これはエラーにはならないので、このオブジェクトを再びJSONの文字列にして
PHP側に送ればうまくいっているように見える。
でも、
>>763 のようにJSONのパースがサポートされているような場合はエラーになるから
そういうのはやらないほうがいい。
やるなら
>>754 かな。前者のは
var json1 ='{"name": "'+document.form.nn.value+'"}';
のように値をダブルクォーテーションでくるむほうがいいと思うけれど。
770 :
758 :2012/01/14(土) 03:43:21.16 ID:???
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行ほどあって、オレのレベルじゃ さっぱり分からんッス。
下のコードをChromeのコンソールから何回か実行すると いつまでたってもwsがGCされなくてメモリリークが起きているみたいです。 wsは一見どこからも参照されてないように見えるのですがどういう理由でGCされないのか知ってる方がいれば教えてください。 (function(){ var ws = new WebSocket("ws://localhost:3000/"); ws=null; })();
何を根拠にリークが起きてると言ってるんだ? スコープから抜けたり、null を代入したからといって即時実行されるわけじゃないだろ。
「Javascript」なんて書くような奴も 所詮Javaとの区別がつかない奴と同レベルw
変なこだわりがあるんだな。
Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; prototypeオブジェクトにメソッドを追加するメソッドですがこのreturn thisはどういう意味があるんでしょうか?
methodを実行したオブジェクトを返します どういう意味があるのかはこれだけではわかりません というかthis.prototypeとか何か間違ってませんか 誰が書いたんですか
呼び出し元の関数オブジェクトが戻り値なるのを意図してるんだろう。 var F = function () {}; var f = new (F.method('hoge', function () { alert('hoge'); })); f.hoge(); 呼び出し元が返るなら、こんな感じに書くこともできる。
あ、Functionオブジェクトだからthis.prototypeでいいのか すみません別に間違ってませんねごめんなさい
jQueryのバージョンごとに処理を変えたいのですが、バージョンの判定って出来ますか?
JavaScriptにおけるコンテキストって具体的にどういうものの事ですか?
>>780 jQuery.fn.jquery
jQuery.prototype.jquery
簡単に書き換えできるけど、バージョンが文字列で返ってくる。
>>781 ・グローバルコード
・eval コード
・関数コード
単に「コンテキスト」ってことだけだと、これらが相当するか微妙だし
これで「分かった」なんてことにもならないだろうけど、とりあえず。
「コンテキスト」がどこで使われてるか、事例を示すといい。
技術ブログでたまにみる下記の書き方は何の意味があるのですか? (function a(){})();
785 :
784 :2012/01/14(土) 17:35:26.68 ID:???
追加で以下の書き方の意味も教えてください これも技術ブログで書かれていたのですが a(b functionContext) = { s1: "test1", s2: "test2", s3: "test3" }; 括弧の中のb functionContextというのは何を意味するのですか?
>>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つ並べることもできないよ
>>784 即時関数でぐぐってください。
>>785 SyntaxError になると思うのですが…。URLを教えてください。
788 :
784 :2012/01/14(土) 17:50:32.37 ID:???
>>783 全ての関数は、生成される際に隠されたプロパティを持つようになっている。
それは、その関数の振る舞いを決めるためのコンテキストとコードである。
こういう説明文でした。
>>788 それは説明用の擬似コード
コンテキストについてはまさしくその記事に書いてある
791 :
784 :2012/01/14(土) 18:03:17.76 ID:???
そうでしたか勘違いしてました それにしてもthisで挫折しました thisの項目は難しいのでそれ以外を読んで勉強します
tes
jQueryのanimate動作が完了した10秒後の処理をしたいのですが それってやっぱり animate({},function( setTimeout(,10*1000) )) しか方法はないのでしょうか? 使っているバージョンは1.71です
794 :
781 :2012/01/14(土) 19:27:29.67 ID:???
>>782 ありがとうございます
レスが遅くなってすみませんでした
795 :
780 :2012/01/14(土) 19:28:35.00 ID:???
間違えましたx 781 o 780です
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(); で呼び出せますが、統一した書き方するにはやはりフレームワーク使って規則にしばられたほうがいいでしょうか?
dankogaiさんがES5に移行したので僕もES5で開発していきたいと思います IE8以下の人すみません
Good Partsの164ページに載ってるJSONパーサって何? 何に使うのですか?
JSONパーサはJSONパーサだろ 何がわからないのかわからないが JSONに無縁な人なら気にしなくていいのではないか そのうち使うだろう
>>799 var jf='{"name":"綾小路"}';
var employee = JSON.parse(jf);
をP162のvar employee=json_parse(jf)のように使うのですか?
JSON.parse()とは違うってことですか?
>>800 昔からJSON.parseがあったわけではないからね。
>>800 例えばAPIでjsonを取得してくるとするじゃん
でも取得してきたものはただの文字列なんだよ
だからパースするの
jsonpならパースされてるからいいんだけど
流れてしまったので
>>793 もし解る方いたらよろしくおねがいします
1.71 1.71 1.71 1.71 1.71 1.71 1.71 1.71 1.71 1.71
>>803 その方法のどういうところが不満か書かないと。
ループで10秒待つような回答が来ても困るわけだろ?
10レス程度で流れたって
即レスじゃないとダメなんです! 2レス後じゃダメなんです!!!
808 :
Name_Not_Found :2012/01/15(日) 08:50:07.35 ID: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"が消える
Operaとかうちでは対応しませんよ
IE9とかうちでは対応しませんよ
812 :
808 :2012/01/15(日) 13:18:44.99 ID:???
IE9とchrome(var16)で試してみたけどできないお(´・ω・`)
過去にまったく同じようなコード書いて普通にIE6,7,8,9,Fx3,Chromeで動いてた記憶がある
>>812 コンソールにエラーが表示されてないか
最小限のコードで試してるか
Eclipse以外の開発ソフトでいいのってある?
817 :
808 :2012/01/15(日) 14:07:36.60 ID:???
firebugとかでステップ実行してみたら
狐は最近デバッグツールついたよね
chromeでステップ実行の方法を教えてください 例えば alert(1); alert(2);←ここで止めたい alert(3);
Scriptsで行番号クリックするだけ
即時関数なんてセンスのない訳語を作りおったのは誰だあ!
即実行ならわかるが 即時の関数とは何だって話ではあるな
>>822 まじでできた ありがとう
つうかよヘルプにコンソールの使い方ぐらい掲載してくれよゴーグルさん
ブレークポイントの仕掛け方なんて言語問わず開発ツールほぼ全部共通
昨日のmixiブログの質問したものです 結局オブジェクト指向で書く場合は var a = { x:100, y:function(){return 1;} } って書くのと var a.prototype = { x:100, y:function(){return 1;} } どちらを選択していいのか分かりません ES5だったら a.prototype = 1; a.prototype = 2; みたいにしてどんどんprototypeを使ってもいいってどこかのブログで読みました
クラス的な使い方をしたいならprototype function StringBuffer () { this._buf = []; } StringBuffer.prototype = { clear : function() { this._buf.length = 0; return this; }, append : function(str) { this._buf.push(str); return this; }, toString : function() { return this._buf.join(""); } } var stb = new StringBuffer(); stb.append("Hello "); stb.append("world"); alert(stb); // Hello world
>>827 一つ目は変数へのオブジェクトの代入、二つ目はオブジェクトへのオブジェクトの挿入
>>827 jsでのオブジェクト指向といえば普通は後者の方法。varはいらないけどね。
たぶんオブジェクト指向を理解出来てないと思う。解説サイトは沢山あるから、最初に考え方を理解したほうがいいよ。
そもそもスコープチェインで参照される prototype を、オブジェクトのプロパティと勘違いしている悪寒。
javascriptはクラスyたインターフェースを使って継承とかするオブジェクト指向じゃないんだな
サマータイムに対応した日時を扱いたいのですがこれはES5とかなら標準で対応とかしてませんか?
>>816 有料且つ英語だがWebStormがいいらしいぞ
835 :
kds :2012/01/15(日) 19:28:58.42 ID:u0xQzqY8
{Input文,For文,If文,イベントモデル,配列, 返り値,関数,変数,テキスト入力,Canvas, オブジェクト すべてを必ず使うこと。} 個別にみるとわかるけど、全部使ってどんなプログラムが 作れるのかわからない。知恵を貸しやがれください。
837 :
Name_Not_Found :2012/01/15(日) 19:37:56.64 ID:vZ/juELo
>853 inputに選択されたフォルダから画像を取得して全部適当に表示すればいいんじゃね
839 :
795 :2012/01/15(日) 20:26:20.46 ID:???
>>796 お願いします(´゚'ω゚`)
質問者違いますが
>>828 さんの書き方にしろってことでFAですかね
>>839 どの書き方とかじゃなくそれぞれの意味を理解しないと
>>840 つまり標準ではそういう機能はないってことですね
タブブラウザで、そのブラウザにフォーカスがあるかどうかに関わらず、 そのウィンドウがメインタブかどうかを取得できますか?
海外アップローダーで広告表示してダウンロード開始時間カウントするやつがあすけど タブ変えるとカウント止まるからきっと取得できる やり方?(゚听)シラネ サーセンwwwwww
>>844 それは単にフォーカスがあるかどうかでやってんじゃね?
ブラウザ自体にフォーカスが無いときでも、そのブラウザでアクティブなタブかどうか知りたいって事だろ。
オレは出来るような気がしない。
WorkerとsetTimeoutとDate使えば出来そう
// タブにフォーカスが当たった時 window.addEventListener("focus", console.log, false); // 外れたとき window.addEventListener("blur", console.log, false);
>>844 Firefox?
あれ、止まってるんじゃないぞ。
カウントが 1/10 くらいのペースになっているだけだ。
849 :
Name_Not_Found :2012/01/16(月) 01:15:43.81 ID:IMGiI3MF
<!DOCTYPE > <html><head> <meta charset="UTF-8"> </head><body> <p>底辺:<input type="text" id="base_input"></p> <p>高さ:<input type="text" id="height_input"></p> <input type="button" onclick="output();" value="output"> <script> var tri = function triangle(base, height){ this.base = base; this.height = height; this.getname = function(){ return "底辺" + this.base + "と高さ" + this.height + "の三角形です。"; } } var b = parseInt(document.getElementById("base_input").value); var h = parseInt(document.getElementById("height_input").value); var newtri = new tri(b,h); function output(){ document.getElementById("output").innerHTML = newtri.getname(); } </script> <p id="output"></p> </body> </html>
なんだこれ? 採点求めているのかな。 5点。 底辺と高さを入力させておきながら面積を求めず、名前 (?) とする斬新さに付与。
あの手法の出番だ。
クロスドメインといったらそらおめえJSONPだろjk
>>851 HTMLScriptElement#src を取得すればいいと思うよ
新入りさんとビギナーさんが混じってんのな。
>>852-855 ありがとうございます
>>855 さんはScript要素にIDを振ってその要素のSRC属性を見よと言っているんですね
それは思いつきませんでした
ありがとうございますそれで行こうと思います
プログラムはそういった発想、工夫が重要だよな
<div class="a b"></div> <div class="a"></div> <div class="b"></div> で、querySelectorAllを使いclass="a b"だけ取るにはどうしたらよいのでしょうか document.querySelectorAll("div.a .b"); document.querySelectorAll("div.a , div.b");でもダメでした
860 :
Name_Not_Found :2012/01/16(月) 04:43:49.56 ID:o/g6DD61
document.querySelector("div[class='a b']"); でどうじゃろ
そうなるとclass="b a"、"a b c"等のマッチングが出来ないのがちょっと。 document.querySelectorAll("div.a").querySelectorAll("div.b"); もダメでしたし document.querySelector("div[class*='a'][class*='b']");ですとclass="ab"にもマッチしてしまいます getElementByTagName("div")でループ回して、className.split(" ")して調べるしかないのかな せっかくのquerySelectorなのに。
862 :
Name_Not_Found :2012/01/16(月) 05:42:31.97 ID:o/g6DD61
>>861 そういう用途の関数作ってDOMにぶら下げちゃったほうが早くね?
ホントにセレクタ書けない奴が多いんだよなー
getElementsByClassName('a b')でよくね
カリー化をするメリットって何なんですか?
高階関数
遅延評価
xmlrequestheader2になると何ができるようになるの?
テンプレの変更提案はレス全体を直して完全な形で貼ってください。 適当に入れておいてみたいな提案はそういうのを面倒見てくれる優しい 人がいるときでないと無理だと思われます。で、もうすぐ900だけど テンプレ結局どうしますか。
質問というか聞きたいのですが 自分はJavascriptやCSSを組むときIEは8と9を視野に入れてるのですが IE6の対応とかは全くやっていません 一般的にはIE6まで視野に入れて構築するべきなのでしょうか?
お仕事でお仕事のクライアントが入れろと言ったら視野に入れるべきだけど そういう場合はIE6なんてうんこだからやめたほうがいいですよと提案してあげるべき それでも入れろとと言ったらYahooもMSもうんこと認めて外すのに入れますか?と聞き それでも入れると言うならお金上乗せしろ 趣味なら最新のだけでいい
日本じゃまだまだシェア高いんだろ
877 :
Name_Not_Found :2012/01/16(月) 16:07:56.75 ID:VAQzryDm
Javascriptの開発のためのツールってないんですか?
いろいろ調べてAptana Studio3というやつをインストールしてみたけど
初心者でまだJavaScriptのプログラミングをしたことのないひとにとっては
わけがわからなすぎる。
単純で【シンプル】なソフトないですか?
HTMLで言えば「へきへき帳(
http://takabosoft.com/win )」みたいなタグ打ちしか機能のない【シンプル】なやつ。
初心者こそツールなんかに頼らず手書きすべきに思いまう
879 :
Name_Not_Found :2012/01/16(月) 16:26:32.32 ID:VAQzryDm
軽機能でいいんです。 <script language="Javascript"> <!-- //--> が自動挿入されて、 コードのカッコが色づけされるだけの機能で十分です。
基本HTMLの色分けにも対応していて scriptタグがあると中のJavaScriptも色分けもしてくれるエディタか? フリーでそんなものがあるなら使ってみたいわ
IE6の対応なんて考えなくていい もうすぐ、XPでIE6は半ば強制的にIE8へアップデートするようになる ってか、未だにIE6使ってる企業は潰れろ。ハゲ。
>>881 基幹システムで使わんとあかんからしゃーないやろ。
IE6がまだシェアあるっていっても、サイトごとに訪問者の傾向によって だいぶ変わってくるしな
クライアントの決裁権握ってる人がIE6使ってるならご愁傷様かな。
IE6は切り捨ててもいいよねとかまだサポートしないととか言ってる奴は次元が狭い
細かな部分のチェックまでしろとは言わんが大体はどんな環境でもサクサク動くものを作ろうと心掛けろ
これからは携帯でもテレビでもデジカメでも腕時計型スマホでもちゃんと見れるページを作らないといけない
>>879 JavaScriptで自分で作ればいい、それも勉強
これからは環境に応じてページの表現を変えれないと話にならない CSS3を巧に使ったりモバイル環境の場合はSVGをSVGliteに変換したりそういった事が必要 まあいずれそういうライブラリが出るだろう
質問です、アク禁ぽいので携帯から失礼します。 hoge.onmouseover = function() { this.className = "hogeClass"; } この(↑)ような処理にsetTimeoutで遅延を設けたいと思っています。 で、その場合に、 var myTimer; hoge.onmouseover = function() { myTimer = window.setTimeout(function() { this.className = "hogeClass"; }, 1000); } これ(↑)だとthisの内容が変わってしまうと思います。 thisを引数にしてタイマーの中に渡さなくてはいけないのかと思い、 やり方を検索したところ関連していそうな情報は多々出てきますが、 私の理解不足からか、エラーばかり出してしまいます。 どなたかアドバイスいただけると嬉しいです。 この流れでアレですがIE6でも動くと嬉しいです。
IE6はMSですら使うなと言ってるような物だぞ。 IE6のシェアが下がったらパーティするくらいだぞ。 世界的にIE6のシェアが一番大きいのは中国らしいがな。 中国相手の何かなら、IE6と手繋いでろ。
>>888 コンシュマー向けとエンタープライズ向けだとブラウザの位置付けも違うからな。
ゆとり乙
>>891 重要な更新とか、そんなのじゃなくて、
半強制でアップデートさせられるらしい。
IE9はIE8より先に寿命来るな
>>887 hoge.onmouseover=function(){
var node=this;
myTimer=setTimeout(function(){
node.className="hogeClass";
},1000);
};
898 :
897 :2012/01/16(月) 19:10:51.29 ID:???
899 :
897 :2012/01/16(月) 19:27:55.46 ID:???
900 :
Name_Not_Found :2012/01/16(月) 19:33:30.39 ID:o/g6DD61
>>896 ブロックAにマウスオーバするとブロックBを表示
ブロックAからマウスアウトするとブロックBを非表示
なわけだから、ブロックBにマウスオーバするれば
ブロックAからマウスアウトするのはおかしかないと思うが?
解決方法は、そのリンク先に描いてある通り、
Aのマウスアウトに微小な遅延を持たせるも良し
relatedElement見てAのマウスアウト処理をスキップするも良し
>>894 >>887 です。
うまくいきました、難しく考えすぎてたみたいです。
ありがとうございます!
<div class="hoge" category="c1"></div> <div class="hoge" category="c2"></div> <ul id="c1"> <li>data1</li> <li>data2</li> </ul> <ul id="c2">以下略 やりたいことは、categoryに対応するliの中身を全部ぶち込んで <div>data1,data2</div> <div>data3,data4</div> にしたい。 ↓みたいなコードになったんだが、objの扱いが何かすげー気持ち悪い・・・。 もっとスマートな書き方あったら教えてください。 $("div.hoge").each(function() { var obj = $(this); target = "ul > li #" + $(this).attr("name"); $(target).each(function() { obj.append($(this).text()) } });
903 :
902 :2012/01/16(月) 20:43:31.12 ID:hM057e4p
×target = "ul > li #" + $(this).attr("name"); ○target = "ul#" + $(this).attr("name") + " > li"; まぁ質問の本質じゃないけど訂正。
>>900 どうも私が躓いていたのは、
子要素に入った時にもmouseoutイベントが発生してしまう、
という要件だったようです。
実現したいのはその子要素の抑制でした。
自分でも何が何だかわかっていなかったので、
変な質問になってしまいました。
もう少し調べてみようと思います。
レスありがとうございました。
>>905 文字列チェックしてeval通した方がスマートじゃね?
>>906 俺もチェックしてeval使ってるけど一応張っておく
>>902 純粋な疑問なんだけどどこが気持ち悪い?
// text を連結するメソッドを定義
$.fn.join = function(str){
return $.makeArray(
this.map(function(){ return $(this).text(); })
).join(str);
};
$('div.hoge').each(function(){
var $self = $(this);
$self.text(
$('#' + $self.attr('category')).children().join(',')
);
});
汚いけどこんなんでどう?
IE6使ってる人って通常のブラウジングとかで困らないのかな Javascriptもかなり違うだろうし CSSもバグだらけだし その辺のWEBページみても本来横にあるものが下に来てたり 表示されなかったりすごいことになってそうだが 案外そういうことはないのかな。
>>885 「次元が狭い」って表現に違和感がある。
次元って広かったり狭かったりする物なのか?
視野が狭いならまだしも。
そういうのを揚げ足取りという
x2sin2y という計算式があるのですがこれはjavascriptで書くと x * 2 * Math.sin(2) * y であってますか?
JS切っても読めるページならIE6でもIE4でも問題ないわハゲ
>>908 インジェクションの可能性すら考えてないのが気持ち悪い
前々から気になっていたんですけど Javascript と JavaScript はどう違うんですか?
921 :
843 :2012/01/17(火) 00:08:15.17 ID:???
回答ありがとう。一工夫必要なようで、いろいろやってみます
∧,,∧ これはインジェクションだよ・・・ ( ´;ω;) ヘ⌒ヽフ⌒γ 注射するの? / o├==l-- (・ω・ ) ) ボクどこも悪くないよ? しー-J しー し─J なんで泣いてるの? ごめんね ∧,,∧ プシュ ( ´;ω;)ヘ⌒ヽフ⌒γ / つ(-ω- ) ) しー-J しー し─J /フフ ム`ヽ / ノ) ヘ⌒ヽフ ) ヽ ゙/ | ( ´・ω・)ノ⌒(ゝ._,ノ / ノ⌒7⌒ヽーく \ / 丶_ ノ 。 ノ、 。|/ `ヽ `ー-'´_人`ー'ノ 丶  ̄ _人'彡ノ ノ r'十ヽ/ /`ヽ_/ 十∨、 __L _L / i  ̄フ Z 父 | | レ ノ ( o)
>>910 ただの書き間違いだw
内容ならまだしも書き間違いに逐一突っ込まれてたらまいるわ
「書き間違い」って表現に違和感がある。 書き間違いって言葉の用法を間違ったりするものなのか? 誤変換やタイプミスならまだしも。
>>926 JavaScriptに例えて言ってみて。
>>915 なんか数学の問題な気がするし本来最初の2は上ツキな気がするけど
あえてそのままなら 2*x*Math.sin(2*y)
>>926 もっともポピュラーな言い訳。
まあ所詮、句読点もまともに使えないし、
内容もただの精神論レベルだからw
JavaScriptで解説されているアルゴリズムの良書が今年こそ発売されるはず
>926=929 お前ほんとムカつくな ほんと消えろよ 自分でもなんであんな風に書いたのかわからねえけど 書き間違えでいいだろ
お、 ファビョったwwwファビョったwww
くだらんからやめろ
>>879-880 > 基本HTMLの色分けにも対応していて
> scriptタグがあると中のJavaScriptも色分けもしてくれるエディタか?
> フリーでそんなものがあるなら使ってみたいわ
GNU Emacs でできるよ。
>>879-880 > 基本HTMLの色分けにも対応していて
> scriptタグがあると中のJavaScriptも色分けもしてくれるエディタか?
> フリーでそんなものがあるなら使ってみたいわ
Vim でできるよ。
リンクが多すぎ それに仕様説明ページなんて初心者が見るわけないじゃん それよりもJavaScript入門サイトとかググり方の説明とか載せた方がずっといい
リンクとかwikiにまとめればいいじゃん
公式リンクしか載せないとういことはないけど、有用かどうか異論がある ようなら新たに追加するのは見送るのが筋では。
仕様はずっと掲載しているし、議論の拠り所になっているので。 結局、今ごろリンクの検討なんかできないので、前スレと同じで 立てて次スレで検討するしかないと思われ。
もういっそ一度0にして 必要なのがあったらまた加えていけばいいんじゃない? こういうときはそうするのが1番結果が良くなると思う
仕様に関するリンクと リファレンスに関するリンク と別けて一覧作れば良いんじゃないかな 質問しに来る初心者が仕様なんて読んでも理解できるわけないし
全部なくして なくして困ったものはまた入れればいいし 困らなければそのまま これでFA
jQueryのリンクがなかったり時代にあってないな
xy座標を指定してグラフを作成できるライブラリありませんか?
Python スレの簡潔さを見習え
仕様がリンクにないと水掛け論になって面倒なんだよね。
全部リンク無くして1スレやってみるというのは賛成だけど。
しかしもう950だから合意なんて無理でしょ。975超えたら現行
と同じで立てて次スレ冒頭で議論を続けるしかないんでは。
>>948 別にcanvasで自分で描けばいいと思うけどね。
Python書こうという奴とJavaScript書こうという奴の初心者度が 全然違うことに問題があるんでテンプレの分量は仕方無いと思うよ。
結局、750くらいからテンプレどうするのと呼びかけてもギリギリ になって次スレが見えてきてから盛り上がって時間切れ。何回この パターンを繰り返したことか…
サンプルが多いopenspc入れろ!
テンプレはもっとシンプルでいい気がする
レスを見ると
>>1 すら読んでなさそうな質問者が多過ぎ
どっちにしろテンプレを簡潔にしないと読まずに質問って流れが多くなるからなw
簡潔にした所で読まない奴は読まないけどな
>>959 githubに接続できないとかどんな環境だよ
テンプレを読まない奴は読まないというのはその通り。 読まないで質問してきた奴に「テンプレにある。読めない奴は帰れ」 と返すためにあるんだと思うな。
別にそれは報告しなくてもいいです
テンプレ論議は eval 論議以上に無駄。
>>964 もうそれ専用のスレ立ててそこでやってろとさえ思うw
>>966 JavaScript テンプレ議論専用スレッド立てるの?
もう外部サイトにテンプレ入れればいつでも自由に編集できるからいいと思うよ
>>968 結局今回も結論でないまま次スレだろうしテンプレに拘りたい人たちで立てた方が良いと思うわ
毎回テンプレ議論でスレ消費しすぎだしw
>970 いんや逆 俺はずっとeval擁護派 あとアホじゃなくてお前より超賢いから、残念!!!
以前ここで質問と回答を見かけた気がするのですが質問させてください Y Z | / | / |/________X ある位置から横方向と縦方向の求め方は分かるのですが 斜め方向はどのように求めるのでしょうか?
じゃあ、975超えたら立てたい人が立てるのをしばらく待って 誰も立てないようならこれまで通りで立てます。
テンプレにこれ追加して 【レスの内容についてのルール】 ◎わかりやすい質問 ◎質問に対してのわかりやすい回答 ○より良い回答を決めるための意見交流 △議論 □その他 ×暴言、挑発等 ◎…相手に良く伝わる内容を心掛けましょう ○…大いに結構ですが、言葉遣いに気をつけましょう △…必要最低限のみ可、行き過ぎる場合はご遠慮下さい □…質問スレに相応しい内容以外は禁止です ×…禁止、このレスへ対しての反応も固く禁止
議論は次スレでね。またはあんたが立てたい人で立てるのならそれでどぞ。 ただし文句で袋叩きになってもよい覚悟で頼みます。
自治厨って、ここを学級会かなんかのつもりでいんのか?
×ただし文句で袋叩きになってもよい覚悟で頼みます。 ○ただし俺が1人で文句を連投して袋叩きにするのでその覚悟で頼みます。
せんせー! 今日誰かが僕のjQueryどこかに隠しましたー!
別に俺は袋だたきにあっても痛くも痒くもなく全くこれっぽっちも困らない 皆が死ぬほど嫌なら問題だろうけど4に書くくらいならここの人達優しいから大丈夫でしょう
んじゃあ僕5書きまーす!!
4〜20:evalの必要性 21〜28:セミコロンの必要性 29〜30:カンマとセミコロン 31〜70:コーディングスタイルについて … … 181〜230:JavaScriptの歴史 231〜240:JavaScriptはJAVAではありません! … … … 941〜980:これからのJavaScriptの〜未来〜 981〜1000:あとがき こんな感じ?
>>982 うまいね(笑)。で、誰か立てないんだ?
>>977 つまらん初心者質問にも親切に回答したりする代わりにこうやって
スレで遊ばせて頂くというのが我々常連の楽しみでもあるわけさ(w
まだ ちいさきころに おやごさんに いわれたろ あぶないひとに ついていっては だめです いま おおきくなつて それが あたまのなかで ぐるぐるまわり ぴかびかひかると こういつた ああ せんせい きようも あらしか わかりやすい なあ(笑 どした どした と とやまの いっちゃあの そこから みちびき みちびかれるのは このひとこと! へんな レスには かかわっては いけません それは どえらい ことつちゆうねん
>>960 HTML5はこのスレですでに入ってるから、削除提案はもっと早めに言っといた方が
DOM HTMLの最新バージョンみたいなもんだから、HTML5を抜く必要はないと思う
wiki作れ。そこにテンプレ貼っとけ。そこで議論して改善しろ
>>965 テンプレ移動するなら、WikiみたいにURI変わらなくて差分がみやすいとこにしてくれ
Wikiで議論するような人たちだったら2ちゃんのスレに議論しに 来ないんじゃないかなあ。それこそテンプレ議論用スレ立てるくらいしか 思いつかない。
ねーよ
992 :
Name_Not_Found :2012/01/17(火) 18:47:21.60 ID:dEvhXB9L
× ねーよ ○ ないよ 正しい日本語を身につけましょう
テンプレ用Wikiよろ
荒らしが酷いのでテンプレ守らない質問はテンプレ要求して答えないようにしよう
996 :
Name_Not_Found :2012/01/17(火) 21:48:46.91 ID:FjEbFYda
<span>aaaa<span class="d">bbb</span>ccc</span> これで、class="d"からaaaaのテキストを取得するには どうしたらいいのでしょうか。たとえばjqueryで $(".d").parent().text(); だとaaaaccccになって しまうのです。
997 :
Name_Not_Found :2012/01/17(火) 21:59:37.30 ID:2SdFrazx
>>996 そんな奇妙なコードをなぜ書かないといけないのだ
単純さをキープするのがプログラミングの基本
単純な HTML を使いましょう
セクシーコマンドーかw どうやったら aaaacccc になるんだw
>>996 もうレス数が無いので次スレで質問するヨロシ
一応答えとくと
$(".d").parent().text().match(/\S+/g)[0];
こんな感じでmatch使えばいけそう
>>996 $('.d').parent().get(0).childNodes[0].nodeValue; が正解
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。