のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,837人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレ+ JavaScript の質問用スレッド vol.76 +

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 計算機プログラミング + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    451 : Name_Not - 2010/02/18(木) 21:47:43 ID:??? (+62,+27,+1)
    >>450
    なるほど、
    ㌧です
    452 : Name_Not - 2010/02/18(木) 22:16:33 ID:??? (+5,-30,-100)
    >>439,442

    ということは、documentオブジェクトにgetElementByIdがないか、
    document.getElementById()の結果のオブジェクトにvalueがないんだろ
    う。

    id="hoge"の要素が複数あって、意図したものとは違う要素でも取れてい
    るんじゃないの?

    453 : Name_Not - 2010/02/18(木) 22:51:32 ID:??? (+7,-30,-150)
    >> 452

    いや、解決は至って単純で、

    hogehoge = document.getElementById("hoge").value;
    <input id="hoge" type="text" />

    とすればエラーが出なくなるんだわ。
    「hoge =」→「hogehoge =」…つまり、id名と変数名を重複しなければ良いってだけ。

    実際にいろいろなブラウザで動かしてみるとわかるよ。エラーになるのIEだけだから。
    IE6はもちろん、最新のIE8でもエラーになるから認識してないっぽい。

    あ、ちなみに、

    var hoge = document.getElementById("hoge").value;
    <input id="hoge" type="text" />

    と、varを付けてローカル変数にすればエラーにならない。w

    ほんと、IEだけは消えてなくなってほしいわ…。
    454 : Name_Not - 2010/02/18(木) 23:03:02 ID:??? (+3,-30,-62)
    IEがdocument.hogeでdocument.getElementById('hoge')なのは結構有名だと思ったけど。
    でもまあIEに限らずHTML内の名前はグローバルと思って設計したほうが安全だよ。
    456 : Name_Not - 2010/02/18(木) 23:19:39 ID:??? (+52,+29,-5)
    んなこたあ法律相談板で訊け
    457 : Name_Not - 2010/02/19(金) 00:23:46 ID:??? (+55,+29,-7)
    バカ自慢はいいからIEより先にお前が消えた方がいいよ
    458 : Name_Not - 2010/02/19(金) 00:52:23 ID:??? (-1,-30,-11)
    >>453

    hoge = "";
    <input id="hoge" type="text" />


    これなら仕様ということで納得できる?
    459 : Name_Not - 2010/02/19(金) 00:57:40 ID:??? (-3,-29,-73)
    IE6の糞仕様に悩まされる毎日だけどこれは知らなかった。
    グローバル変数使うときはwindowsオブジェクトあたりに連装配列で入れるよね?
    460 : Name_Not - 2010/02/19(金) 01:08:42 ID:??? (-1,-29,-19)
    ver hoge; でいいだろ。

    立派なグローバル変数だ。
    461 : Name_Not - 2010/02/19(金) 01:09:55 ID:??? (-4,-27,-4)
    IE6ってまだ切れないの?
    462 : Name_Not - 2010/02/19(金) 02:08:36 ID:??? (+91,+29,-6)
    切れる、切れないの問題じゃない。
    切っていくべきなんだ。
    463 : Name_Not - 2010/02/19(金) 02:20:40 ID:??? (+15,-17,-41)
    IE の id と名前空間絡みの話だけど、変数名との衝突だけでなく、メソッド名ともぶつかった気がする。
    確か id に "submit" を持つ要素が存在すると、submit() を呼び出せなかった様な。

    もう、おねむだから確認はしないけど。
    464 : ○~* - 2010/02/19(金) 02:22:56 ID:yqaEbREM (+125,-29,-149)
    記録と読み出し以外は すべて js で処理する掲示板を作ってます.
    (js に こだわる理由は改造のしやすさと負担の分散)

    現在は form に tsv データをぶち込んで js に読み取らせる方式.
    これには欠点があって cgi によるタグ無効化処理を無効化する作用が...
    (<, > などが勝手に復元されてしまう)
    (今は cgi 側では無視して js 側で無効化)

    他に考えられる読み込み方式は Ajax.
    こちらで問題となるのが IE.
    セキュリティーホールとして有名な ActiveX を ON にする必要があるとか.
    IE も ver. 8 がでてるらしいですが, この辺の事情は変わってないのかしらん ?
    (7,8 となってもワケワカメナ IE, いっそ, バッサリ...)
    465 : Name_Not - 2010/02/19(金) 02:24:25 ID:??? (+70,+29,-37)
    >>462
    あとあれだな
    イベント関連とかIEでは使えて他で使えないとか

    もうコンピューター上で無いと困るくらいの存在になってるブラウザなのに
    そういう差違があるのはいただけないわ
    466 : Name_Not - 2010/02/19(金) 10:09:03 ID:??? (+52,+29,-4)
    連装配列…
    なんか強そうだ
    467 : Name_Not - 2010/02/19(金) 10:42:12 ID:??? (+14,-29,-9)
    >> 462

    MS自ら、こんなキャンペーンを始めたしな。

    http://japan.cnet.com/news/media/story/0,2000056023,20404512,00.htm

    まさに自作自演。w
    468 : Name_Not - 2010/02/19(金) 14:50:48 ID:??? (+21,+29,-41)
    >>464
    そんなことをするやつは大概javascriptも切ってるんだから
    気にするならjavascriptなしでもある程度読めるようにしとけ
    そうしたらDOMからデータ読めるようになって一石二鳥だ
    469 : Name_Not - 2010/02/19(金) 16:37:40 ID:4sngj6D8 (+61,+28,-37)
    >>467
    IE6のサポートを終了します、ってひとこと言ってくれれば済むのに。
    んで、こっそりとIE6を攻撃するものをゴニョゴニョすれば。
    470 : Name_Not - 2010/02/19(金) 17:31:52 ID:??? (+31,+29,-15)
    >>464
    お前のエスケープのやり方が間違っている
    471 : Name_Not - 2010/02/19(金) 17:46:23 ID:??? (+50,+29,-20)
    未だにIE6をリプレースできないシステムも多いから
    迂闊にサポート切れんだろう、韓国とか
    MSもここまで開発者が馬鹿だと大変だな
    472 : Name_Not - 2010/02/19(金) 17:46:58 ID:??? (+70,+29,-37)
    >>469
    XP のサポート期間がまだ残ってるので
    標準ブラウザの IE6 もまだサポートしなきゃいけない
    MS 自身も早く 7 か 8 に移ってほしいと思ってるが
    ビジネス上の約束を違えるわけにはいかない
    476 : Name_Not - 2010/02/19(金) 18:10:40 ID:??? (+28,+29,-61)
    ><, > などが勝手に復元されてしまう
    まずこれを説明してみろ
    JSでデータをいじるのにCGI側でエスケープするのがまずありえないんだが(今はやめたらしいが)
    お前が馬鹿なことをしてない限りこんなことになることもない
    478 : Name_Not - 2010/02/19(金) 18:44:38 ID:??? (-1,-29,-22)
    それ復元されてるんじゃなくて、表示が <, > だって言いたいんじゃない?
    <, > と表示されてるんだったら復元されてない。まず HTML から勉強しよう。
    <, > と表示させたいんだったら、<, > だ。
    479 : Name_Not - 2010/02/19(金) 18:46:57 ID:??? (+11,-6,+0)
    &lt;
    480 : Name_Not - 2010/02/19(金) 18:49:21 ID:??? (-1,-29,-2)
    2ch めんどくさいな・・・
    <, > と表示させたいんだったら、&lt;, &gt; だ。
    481 : Name_Not - 2010/02/19(金) 18:57:52 ID:??? (+25,+29,-73)
    >>473
    2chのdatのように直で読まれることを前提に、xmlの要領で単純なhtmlを吐く
    そのhtmlのヘッダにjs本体を読むようにしておく

    やってることはtsv埋め込みと同レベルだ、負荷がかかるとかばかげたことは言うなよ?
    482 : Name_Not - 2010/02/19(金) 18:59:28 ID:??? (+4,-23,-20)
    そのtsvをhtmlにしてページに埋め込むだけという説明で十分だったか
    483 : Name_Not - 2010/02/19(金) 19:02:33 ID:??? (+42,+1,+0)
    >2ch めんどくさいな・・・
    484 : Name_Not - 2010/02/19(金) 19:08:28 ID:??? (-12,-28,-51)
    >>477
    480が言ってるがtextarea内に<、&を書けるわけがない
    セキュリティ以前にHTMLが壊れてたら話にならんだろ
    それでinnerHTMLとか言ってるならかなり恐ろしいぞ
    486 : Name_Not - 2010/02/19(金) 19:37:19 ID:??? (+1,-16,-68)
    >>477
    innerHTMLでテキストの書き出しをやってるの?
    HTMLを出力するならそれで良いけどテキストで表示させたかったらnodeValue使おうよ
    487 : 464 - 2010/02/19(金) 19:57:57 ID:REqSB4kI (-16,+29,-74)
    すみません, これ以後, 挨拶抜きで...

    >>484
    >セキュリティ以前にHTMLが壊れてたら
    たとえば (悪意がなくて) 単にタグ閉じわすれとか ?

    それでinnerHTMLとか言ってるならかなり恐ろしいぞ
    >ぶるぶる...
    でも, 受け取ったままの状態では ただの texte string にすぎず,
    それを js で処理した上で 吐き出される前には何もできないはずですが ?
    あっしは何か見落としてますか ?
    489 : 464 - 2010/02/19(金) 20:10:20 ID:REqSB4kI (-14,+29,-62)
    すみません, これ以後, 挨拶抜きで...(ご無礼, お許しを)

    >>486
    >HTMLを出力するならそれで良いけどテキストで表示させたかったら
    すみません, 勉強不足です~.
    参考までにメリット | デメリットなどをお教えいただけると...
    490 : Name_Not - 2010/02/19(金) 20:16:28 ID:??? (+0,-30,-228)
    お前がHTMLも書けないことはよく分かった。

    textareaの中はPCDATAなんだから<、&は&<、&になっていなければならない
    まずこれを怠っている時点でXHTMLを書く資格がない

    それらは当然、textarea.valueを通せば復元されて<、&になっている
    それは正しいデータを得られたということで、何の問題もない
    この段階で全ての実体参照は展開されているはずだ
    &<となっていてほしいのは、HTMLの実体参照の解説をしているときくらいだろう

    データを出力するときはcreateTextNodeすれば<、&は勝手に&<、&になる
    何も考えることはない

    もしinnerHTMLでの出力を考えるなら
    ・defer属性付きのscript要素
    ・イベント属性
    ・data:スキーム
    最低限、これらは除去しなければならない
    IE8ならtoStaticHTML()とかあるが、はっきり言って今のお前にできるとは思えない
    HTMLタグは許すな、全部エスケープしてしまえ
    491 : Name_Not - 2010/02/19(金) 20:18:29 ID:??? (-9,-27,-1)
    <
    &<
    492 : Name_Not - 2010/02/19(金) 20:20:09 ID:??? (+1,-21,+0)
    くそw すまん &lt;
    494 : 464 - 2010/02/19(金) 20:38:28 ID:REqSB4kI (-14,+30,-205)
    >>490
    >お前がHTMLも書けないことはよく分かった。
    ぎゃぼ~, ひでぶ~ !!!

    >&は&<、&になっていなければならない
    も, 文字化け~ (あっ, すっ, すべては 2ch cgi の落とし穴です~)

    >この段階で全ての実体参照は展開されているはずだ
    その通りです.
    で, この事実を解った上で使い切るか, はたまた別のアプローチを取るか,
    もしそうだとするのなら あっしが考えつく以外の何かがあるかどうか...

    >データを出力するときはcreateTextNodeすれば
    調べて実験してみます.

    >HTMLタグは許すな、全部エスケープしてしまえ
    許してませんが...
    それとも何か落とし穴が ?

    口調は厳しいけど, 大変参考になりました.
    まじ, 感謝, 感謝 ~ !
    496 : Name_Not - 2010/02/19(金) 21:35:01 ID:??? (+23,+29,-24)
    エスケープの基本中の基本だろ
    これを予想外と言ってる段階で・・・なあ
    497 : Name_Not - 2010/02/19(金) 21:38:50 ID:??? (+39,+29,-46)
    エスケープの基本中の基本というかエスケープすらやってないだけでは
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - 計算機プログラミング + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について