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

    私的良スレ書庫

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

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - タグè¿1⁄2åŠ + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    701 : Name_Not - 2010/10/29(金) 06:32:27 ID:??? (+23,+5,+0)
    ↑ミスりました
    703 : Name_Not - 2010/10/29(金) 06:39:10 ID:??? (-6,-29,-15)
    new RegExp("aaa")
    704 : Name_Not - 2010/10/29(金) 08:52:57 ID:??? (+1,-30,-54)
    >>699
    var a = 'aaa';
    var r = RegExp(a, 'ig');
    $('.class0').each(function(){
    var target = $(this);
    target.html(target.html().replace(r, "bbb"));
    });
    705 : Name_Not - 2010/10/29(金) 16:12:31 ID:??? (+3,-30,-39)
    java scriptの動作がいまいち分からないんですが。
    ブラウザがhtmlの中に書かれたjava scriptを
    解釈して表示するまでの流れ(?)みたいなのを教えてくれませんか?

    document.write("hoge");
    とかしてるときに、なにがどう動いてるんでしょうか?
    706 : Name_Not - 2010/10/29(金) 16:15:17 ID:??? (+11,-25,-25)
    ブラウザに積まれてるJavaScriptエンジンが構文解析を行いスクリプトを実行している
    707 : Name_Not - 2010/10/29(金) 16:23:55 ID:??? (+71,-18,-11)
    >>706
    ブラウザの、ソースを表示するで出てくるソースと
    java scriptで動いてるのとの関係がいまいちどんな感じか分からないんですが.
    708 : Name_Not - 2010/10/29(金) 16:35:53 ID:??? (+42,+24,+0)
    エスパーすぎる・・・
    709 : Name_Not - 2010/10/29(金) 16:56:50 ID:??? (+91,+10,-177)
    >>707
    ブラウザは受け取ったHTMLのタグやテキストをDOMっつー構造に再解釈する。
    それを元にウィンドウ上に見えるように再構築する(レンダリング)。
    それと別にブラウザはJavaScriptも解釈して実行する。
    JavaScriptはレンダリング前のDOMに介入できる。
    DOMが変更されるとブラウザはそのDOMを元に再レンダリングする。

    大雑把に言うとこんな感じかと。
    710 : 709 - 2010/10/29(金) 17:12:31 ID:??? (+67,+29,-50)
    >>707
    ちなみにソースはレンダリングやJavaScript実行前の状態なので影響を受けてない。
    Chromeの「要素を検証」とかで見れば影響後の状態も見れる。
    711 : Name_Not - 2010/10/29(金) 17:13:28 ID:??? (+57,+29,-3)
    そんな説明がわかるわけもない初心者だろう
    712 : Name_Not - 2010/10/29(金) 17:18:58 ID:??? (+52,+24,-30)
    そのレンダリングするエンジンが複数あるおかげで、俺らは困らされるんだがなw
    Trident? あーあー聞こえねー。
    713 : Name_Not - 2010/10/29(金) 17:35:48 ID:??? (+69,+28,+2)
    >>709
    わかりました。ありがとうございます。
    715 : Name_Not - 2010/10/29(金) 18:51:10 ID:??? (+57,+29,-18)
    手がかりになるようなヘッダが全くないのであれば
    bodyのハッシュでも取っておいて比較するしかないんじゃない
    JSだけでやるのは非現実的ですな
    716 : 714 - 2010/10/29(金) 18:57:10 ID:??? (+5,-22,+2)
    どうもありがとうございますm(_ _)m
    717 : Name_Not - 2010/10/29(金) 19:03:22 ID:??? (+3,-29,-90)
    ちょい補足
    まず目的のサーバからどんなヘッダが返されているか確認するのが先
    Content-LengthだけではなくAgeやEtagが利用できる可能性もある

    それがまるでないようであればbody部のハッシュ
    (短いならbody部そのもの)を取っておいて比較するしかない
    MD5やSHA-1ハッシュをJSだけで計算するライブラリは
    ちょっと検索すれば見つかるので
    どうしてもJSでやりたければそういうのを使うのも手
    718 : Name_Not - 2010/10/29(金) 19:03:22 ID:FYx7Z3IH (+0,+29,-10)
    JavaScriptで更新確認とかする時点で
    なんかヘンな気もするが
    719 : Name_Not - 2010/10/29(金) 19:04:59 ID:??? (+57,+29,-76)
    どのヘッダを使うにしても「前回の値」をどこに保存しておくかという問題はあるよね
    サーバサイドの処理を挟まないのであればCookieかlocalstorageぐらいしかなさそうだけど
    720 : Name_Not - 2010/10/29(金) 19:07:46 ID:FYx7Z3IH (+0,+29,-29)
    つかそれ以前に基本的にJavaScriptじゃ目的のサーバーが
    クロスドメインなだけでアクセスすらできないでしょ?
    721 : Name_Not - 2010/10/29(金) 19:15:07 ID:??? (+0,-28,-8)
    それはまた別の問題だしXHR Level 2ではクロスドメインアクセスできるし
    722 : Name_Not - 2010/10/30(土) 12:03:24 ID:??? (+32,+9,-3)
    JSライブラリの話はここでいいの?
    724 : Name_Not - 2010/10/30(土) 14:12:36 ID:??? (+53,+29,-4)
    >>723
    解決しますた…
    ほんとすみませんでした
    725 : Name_Not - 2010/10/30(土) 14:27:36 ID:??? (-1,-29,-24)
    >innerTextとかinnerHTMLとか今どき使っちゃだめ?
    なんで?
    726 : Name_Not - 2010/10/30(土) 15:02:20 ID:??? (-1,-29,-2)
    少なくともinnerTextは無いな
    727 : Name_Not - 2010/10/30(土) 15:59:57 ID:??? (+57,+29,-30)
    個人的にはinnerHTMLは中身にテキストノードしかない場合に結構使うわ
    728 : Name_Not - 2010/10/30(土) 17:03:43 ID:??? (-1,-29,-57)
    自分もその用途にはよく使うけどいかんの?
    A要素とかSPAN要素をcreateElementしてinnerHTMLってのはよくやる
    (Aの中がIMG要素ならやらないけど)
    729 : Name_Not - 2010/10/30(土) 17:19:03 ID:??? (+46,+23,-16)
    まあ先行実装だし非推奨だし
    730 : Name_Not - 2010/10/30(土) 18:05:23 ID:bx0snPg3 (+66,+29,-83)
    マウスでの mousedown や click、mouseover などでマウスが文字列の上にあるか
    どうかというのを知る方法はないでしょうか?

    文字列の上でクリックされた場合などはそれを選択しようとしている時だと思うの
    で余計なことをしないようにとかいった風に使いなと思っています。

    ある要素の上というのではなく、そこのマウス位置に文字列が実在するのかどうか
    というのをどう判断して良いのかどうかどうしても思いつかなくて。
    731 : Name_Not - 2010/10/30(土) 18:07:43 ID:bx0snPg3 (+20,+27,+0)
    日本語ヘンですがすみません
    732 : Name_Not - 2010/10/30(土) 18:28:12 ID:??? (-1,-29,-62)
    今時jqueryとかprototypeなんかがあるからinnerTextとかinnerHTMLで自前で実装しちゃダメって聞いてるんだろう
    733 : Name_Not - 2010/10/30(土) 22:00:37 ID:??? (+88,-29,-117)
    innerHTML を使うべきでない理由

    ・遅い
    ・テキストノード挿入時、HTMLエスケープしなければならない (予期せぬバグが混入する可能性がある)
    ・インラインJavaScriptとして埋め込むとき <> をUnicodeエスケープする必要がある

    ちなみに innerHTML はHTML5で標準化されているので、>>3 は修正した方がいいと思う。
    734 : Name_Not - 2010/10/30(土) 22:08:46 ID:??? (+80,+11,-15)
    >>733
    HTML5はまだ勧告されてないよ
    735 : Name_Not - 2010/10/30(土) 22:25:08 ID:??? (+81,+29,-188)
    >>734
    勧告はとうぶん先だって言われてるが、最近の風潮は「使えるものは使っていく」というもの
    勧告されていない≠使えない

    そんなに心配ならWHATWGのほうのHTML5仕様にある、各ブラウザの実装対応状況を読めばいい
    左側にフキダシみたく出るやつ
    あれは実装が行われている場合、テストケースをパスしているかを表している
    グレーアウトは未実装、赤は実装済だがテスト通過してない、緑は実装&テスト通過

    >>733
    innerHTMLも、使うシチュエーションによっては利点がある
    大量のテキストを一気にDOMノード化したい場合とか
    736 : Name_Not - 2010/10/30(土) 22:56:00 ID:??? (+66,+29,-12)
    >>730
    mousedownとかを紐付ける要素を指定するときに、選択するようなものにしなければいいじゃん。
    なんか使い方がおかしい気がする。どうしたいのか書いてみ?
    737 : Name_Not - 2010/10/30(土) 22:57:21 ID:??? (+57,+29,-17)
    勧告されてなくても主要ブラウザは実装してるからね
    738 : Name_Not - 2010/10/30(土) 23:28:41 ID:??? (+22,-29,-11)
    <a href="#" onmousedown="~~~">
                     ↑これを実行しないようにしたいです
    どうすれば良いですか?
    739 : Name_Not - 2010/10/30(土) 23:35:44 ID:??? (-6,-29,-7)
    <!-- <a href="#" onmousedown="~~~">~</a> -->
    740 : 738 - 2010/10/30(土) 23:37:45 ID:??? (+57,+29,-20)
    そうじゃなくて、元々HTMLに書かれているマウスイベントをJavaScriptで無効化したいんです。
    741 : Name_Not - 2010/10/30(土) 23:52:40 ID:??? (+3,-29,+0)
    >>738
    element.onmousedown = null;
    742 : Name_Not - 2010/10/31(日) 00:05:27 ID:??? (+2,-30,-15)
    >>741
    出来ました!ありがとうございます。

    objs.snapshotItem(c).wrappedJSObject.onmousedown = null;
    743 : 733 - 2010/10/31(日) 00:07:28 ID:??? (+17,-30,-261)
    >>735
    innerHTML を使いたくなる気持ちはわからなくもないんだけど、innerHTML は文字列処理だからあまり JavaScript に合わない気がしてる。
    多量のDOMノードといっても何らかの整形フォーマットがあるわけだし、厳密にフォーマットを定義したい場合はDOMで生成する方が適切だと思える。
    (思想の違いだから、他人に押しつけることは出来ないけど)

    ただ、もっと簡単にノードを生成できるメソッドは用意されてもいいと思う。
    createElement, cloneNode, insertRow ... といろいろあるけど、querySelectorAll のような革新的なメソッドはないんだよね。
    出来れば、こんなコードを書いてみたい。

    var p = document.createNodeByQuery('p>span.hoge');
    744 : Name_Not - 2010/10/31(日) 00:29:12 ID:??? (+16,-30,-29)
    それぐらいならすぐできるけど、他の属性やtextがめんどくさいな。

    ってかそういえば前にelement作成用の関数作ったことあったわ。
    MakeElement('test', ['table', ['border', '1'],
    ['tbody', ['id', 'tst_1', 'style.color', 'black'],

    みたいな感じ。
    745 : 733 - 2010/10/31(日) 00:43:16 ID:??? (+4,-29,-79)
    >>744
    属性に関しては属性セレクタがあるし、http://www.w3.org/TR/css3-syntax/ に Syntax があるから作れないことはないと思うけど、「すぐできる」ってすごいな。
    師匠と呼ばせてもらってもいいですか?w

    テキストノードはCSSセレクタの泣き所だよね。
    XPath式 にすれば一気に解決しそうだけど…。
    746 : Name_Not - 2010/10/31(日) 01:05:17 ID:??? (+0,-30,-62)
    >>743
    ZenCodingでそんなセレクタ指定のコーディング方法あったな
    ul.tes>li*4ってタイプすると<ul class="tes"><li></li><li></li>・・・</ul>と展開される

    おっといいアイディアが思い浮かんだぞ
    747 : Name_Not - 2010/10/31(日) 02:27:08 ID:??? (+2,-29,-27)
    >>742
    wrappedJSObjectってことはMozillaだろ
    だったら直接removeAttribute使えよ
    わざわざラップされてるのをはがすなよ
    748 : 738 - 2010/10/31(日) 02:30:27 ID:??? (-1,-29,-14)
    >>747
    removeAttributeで出来ました。ありがとうございます。
    749 : Name_Not - 2010/10/31(日) 04:59:00 ID:??? (+5,-30,-140)
    >>744
    jsでzencodingチックにDOM作成するプラグイン作った人はすでにいたよ
    http://sakuratan.biz/jquery/zencoding/


    ところでFireFoxもしくはChromeで、JSで作成したファイルを名前つけて保存させるには
    location.href = 'data:application/octet-stream,'+encodeURIComponent(text);
    みたいにするしかないっすか?
    デフォルトのファイル名も付けられると便利なんだけど…
    750 : Name_Not - 2010/10/31(日) 11:03:18 ID:??? (+3,-30,-112)
    javascriptの関数実行タイミングが意図したタイミングで動作しません。

    <head>
    <script language=javascript>
    <!--
    function send(){
    (DBに書き込む処理@asp)
    }
    -->
    </script>
    <body>
    <form>
    <input type=button name=btn onClick="send()" value="次へ" >
    </form>
    </body>
    </html>

    「DBに書き込む処理」が、ページを開いたときに実行されていました。
    (Page開いた時点でmdb開いてみると既に書き込まれている)

    「次へ」ボタンを押したときに初めて実行されて欲しいのですが、
    どのように直せばよいのでしょうか。ご教示下さい。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - タグè¿1⁄2åŠ + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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