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

    私的良スレ書庫

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

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

    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
    651 : Name_Not - 2011/08/24(水) 00:14:35.34 ID:??? (+92,+26,+0)
    >>649
    同期とれるよ
    http://jsfiddle.net/kk7q8/
    652 : Name_Not - 2011/08/24(水) 00:19:01.53 ID:??? (+95,+27,-14)
    せめて再現可能なコードを書いて欲しい
    653 : Name_Not - 2011/08/24(水) 00:59:11.53 ID:??? (+109,+29,-51)
    みなさんレスどうもです。
    >>650
    現状その手段を用いてます。

    >>651
    例えば①で移動先が描写の重い処理や回線速度が遅かったら
    たぶん完全に表示しきる前にalert出ます。

    >>652
    勉強中な身うえ無理です><
    654 : Name_Not - 2011/08/24(水) 03:47:02.67 ID:??? (+35,-30,-125)
    DOMエレメントに変数を記録しておく事って出来ませんか

    例えば
    addObj= document.createElement('div');
    addObj.innerHTML="ほげほげ";
    document.body.appendChild(addObj);

    で、どんどんオブジェクトを作っていく時、addObjに外部から見えない変数、オブジェクト、配列を記録させたいです
    serializeしてsetAttributeは思いついたのですが、serializeせずに直接データを入れる方法があればそっちを使いたいです
    655 : Name_Not - 2011/08/24(水) 07:20:45.81 ID:??? (+4,-29,-271)
    >>654
    jQueryの実装を例にすると、ノードオブジェクトにプロパティを1つ追加して、そのプロパティ値にデータ保存用オブジェクトのプロパティ名を保存しておくという方法がある

    ↓のページにある「jQuery.data 関数」の項目がパッと見わかりやすいかも
    http://d.hatena.ne.jp/mollifier/20101006/p1

    ただし、行儀が悪いというか、将来的な仕様変更で使えなくなる可能性がある
    Nodeオブジェクトへのプロパティ追加が禁止されたらアウト
    でも、とりあえず「今のところは」大丈夫な方法

    一番確実なのはsetUserData()を使う方法
    http://developer.mozilla.org/En/DOM/Node.setUserData
    ただし、これ実装している処理系はGecko(Firefox)だけっぽいので、実用を考えると無理ゲー

    というわけで、やっぱりjQueryみたいな方法を使うのが無難だと思う
    656 : Name_Not - 2011/08/24(水) 07:44:17.09 ID:??? (+93,+29,-11)
    >>653
    非同期になるはずはないんだけどね
    書いてない他の処理が影響してそうな感じがする
    657 : Name_Not - 2011/08/24(水) 07:45:54.29 ID:??? (+0,-29,+0)
    >>654
    クロージャに閉じ込めるかsetUserData
    658 : Name_Not - 2011/08/24(水) 08:27:06.11 ID:??? (+43,-2,-76)
    >>656
    表面の描画は基本的にスクリプトと非同期
    要素の位置を変更しても基本的に直ちに描画はされない
    スクリプトで非常に重い処理をし続ければそれが終わるまで描画が実行できない
    そのためのsetInterval
    659 : Name_Not - 2011/08/24(水) 09:00:04.83 ID:??? (+39,+6,-21)
    >>654
    質問内容とは関係ないんだけど、
    変数名にaddObjってのに違和感がある。
    動詞は変数名じゃなく関数名に付けるべきだ。
    660 : Name_Not - 2011/08/24(水) 16:37:26.00 ID:??? (+48,-30,-65)
    var fuga = {};
    fuga['日本語'] = 'ほげほげ';
    fuga['英語'] = 'hogehoge';]

    シンプルでいいとは思うのですが、ハッシュキーにマルチバイト文字をいれたくないのですが、いい改善方法ないでしょうか?
    661 : Name_Not - 2011/08/24(水) 16:49:21.78 ID:??? (+4,-30,-86)
    fuga['ja'] = 'ほげほげ';
    fuga['en'] = 'hogehoge';

    何がしたいのかがいまいちわからない。
    多言語対応の定義をどうすればいいのかという事?
    662 : Name_Not - 2011/08/24(水) 17:40:09.73 ID:??? (+0,-29,-1)
    >>640
    FileReaderの存在を知ったらすぐ作れた。thx
    663 : 660 - 2011/08/24(水) 18:03:37.67 ID:??? (+80,-30,-65)
    >>661
    他にうまくデータ型を持てるように出来ればいいのですが、
    もっともシンプルなのでできればハッシュがいいのですが、マルチバイトは避けたいので、
    例えば多重配列にして、
    var fuga = [
    ['日本語', 'ほげほげ'],
    ['英語', 'hogehoge']
    ];
    なんかでもいいのですが、何かいい方法がないかと思って聞きました。
    すみません。色々説明が下手で日本語も多分おかしいです。
    664 : Name_Not - 2011/08/24(水) 18:07:45.24 ID:??? (+4,-30,-88)
    fuga['ja'] = ["日本語", 'ほげほげ'];
    fuga['en'] =["英語", 'hogehoge'];

    やりたいことがわからんな。
    全言語のリスト(selectとか)作るなら>>663の配列でいいと思う。
    665 : Name_Not - 2011/08/24(水) 18:37:43.98 ID:??? (+33,-30,-62)
    外部htmlファイルを読み込んでその中身を$htmlという変数に格納するところまではできたのですが
    この$html内の<body>から</body>の中身のみ取得して$textへ格納する正規表現はどう書けばいいのでしょうか?
    666 : Name_Not - 2011/08/24(水) 19:45:31.95 ID:??? (+67,+29,-29)
    >>663
    日本語が駄目な理由を明確にしないと適切なアドバイスは出来ないと思うよ
    >>660が駄目で>>663が良い理由もよくわからないし
    667 : Name_Not - 2011/08/24(水) 19:49:50.16 ID:??? (+0,-29,-15)
    >>665
    正規表現使うよりdocument作ってbody内を取ったほうが良いと思う
    668 : Name_Not - 2011/08/24(水) 20:50:17.94 ID:??? (+151,-30,-184)
    var iframe, doc, $text;
    iframe = document.body.appendChild(document.createElement('iframe'));
    iframe.style.cssText = 'position: absolute; top: -1000px';
    doc = iframe.contentWindow.document;
    doc.open();
    doc.write($html);
    doc.close();
    document.body.removeChild(iframe);
    $text = doc.body.innerHTML;
    669 : Name_Not - 2011/08/24(水) 20:58:27.09 ID:??? (+21,-30,-22)
    <html><body>hello</body></html>
    <html><body>hello
    <body>hello</body>
    <body id="test">hello</body>
    <body id='test'>hello</body>
    <body id=test>hello</body>
    <body id class><body>hello</body></body>
    正規表現でやるならこれくらいは網羅してほしいな
    670 : Name_Not - 2011/08/24(水) 21:05:21.62 ID:??? (+4,-29,-107)
    >>668
    無理矢理って感じだな。
    なんか前時代的な書き方だ。

    実際問題、iframeを使わずに外部ページを表示するのに
    AJAXなどで外部のhtml取得。
    でもその外部ファイルの<body>以外の<html>タグ、<head>内などいらない物を削除して埋め込むテキストを生成してページに埋め込むって
    需要ありそうだけど情報無いよね。
    671 : Name_Not - 2011/08/24(水) 21:06:48.41 ID:??? (+63,+29,-22)
    あるにはあるけどやりたい事によって処理違うし
    >>668の書き方は一番無難だと思うけどな
    672 : 665 - 2011/08/24(水) 21:22:34.99 ID:??? (+68,+29,-28)
    >>668
    ありがとうございます。
    つまりは正規表現だけでは無理と言うことですか?

    673 : Name_Not - 2011/08/24(水) 21:25:37.00 ID:??? (+76,+29,-48)
    htmlがある程度ちゃんとしてれば正規表現でもできるよ。
    >>668の手もあるってだけ。
    正規表現はぐぐればいくらでも出てくる。
    674 : 665 - 2011/08/24(水) 21:51:15.75 ID:??? (+31,-29,-36)
    >>673
    >正規表現はぐぐればいくらでも出てくる。
    その調べながらやっているのですがうまく動かないんです。
    /<body(.*?)>(.*?)<\/body>/
    こんな感じでやったのですがうまく動きませんでした。
    675 : Name_Not - 2011/08/24(水) 21:55:22.04 ID:??? (+40,+14,+1)
    >>669
    ねーよ
    676 : Name_Not - 2011/08/24(水) 21:55:45.23 ID:??? (+40,+13,+0)
    >>674
    再現出来るソース
    677 : Name_Not - 2011/08/24(水) 22:01:52.64 ID:??? (+89,+27,-22)
    正規表現を削ってどこが問題なのか特定すればいいじゃん。

    多分改行が問題。
    678 : Name_Not - 2011/08/24(水) 22:10:11.16 ID:??? (+28,-30,-34)
    正規表現なんて使うもんじゃないと思うが…

    <body>
    <script>'</body>';</script>
    <!-- </body> -->
    <! </body> >
    <![CDATA[ </body> ]]>
    <p title="</body>">p</p>
    </body>
    679 : Name_Not - 2011/08/24(水) 22:18:11.62 ID:??? (+3,-30,-48)
    (?:<\/body>\s*(?:<\/html>\s*)?)?$
    こんなもんでどうよ、

    というか、今回のは書き換えるとかじゃないならiframeで直接表示でいいと思う。
    680 : Name_Not - 2011/08/24(水) 22:26:58.76 ID:??? (+68,+28,-1)
    >>677
    見事にその改行の問題でした。
    ありがとうございます。
    681 : Name_Not - 2011/08/24(水) 22:41:15.52 ID:??? (+3,-29,-7)
    必要ないかもしれないけど一応改行対策した物です。
    /<body(.*?)>([\s\S]*)<\/body>/
    682 : Name_Not - 2011/08/24(水) 22:57:45.53 ID:??? (+79,+8,-33)
    素直にDOM使うべきだと思うけど、正規表現で>>678にどう対処する?
    683 : Name_Not - 2011/08/24(水) 23:10:00.38 ID:??? (+81,+29,-64)
    >>682
    でもこれが、JavascriptだからDOMを扱えるから>>668の方法を採用できるが
    これがPerlやPHP側で処理したいとなると結局、正規表現を使うことになるから
    正規表現での抜き出し方法はわかっていた方が、いいとも言える。
    684 : Name_Not - 2011/08/24(水) 23:20:07.70 ID:??? (+29,-29,-45)
    PHPでもDOMだしPerlでもDOMだと思うが
    685 : Name_Not - 2011/08/24(水) 23:24:37.05 ID:??? (+57,+25,-30)
    >>684
    PHPにおいては「DOM 拡張モジュール」が有効になってないと使えない。
    だから使えないサーバの事も考慮する必要がある
    686 : Name_Not - 2011/08/24(水) 23:30:10.31 ID:??? (+13,-30,-34)
    >>682
    >>681をベースに考えるなら
    /<body(.*?)>([\s\S]*)<\/body>[\s\S]*$/
    でOK。
    結局、ここに書き込んでいる人で正規表現理解しているのは>>679と質問をした>>665自身と俺だけ?
    687 : Name_Not - 2011/08/24(水) 23:43:35.54 ID:??? (+32,+14,+0)
    キリッ
    688 : Name_Not - 2011/08/24(水) 23:44:03.11 ID:??? (+11,-29,-19)
    phpのdomはデフォで有効だけどな
    689 : Name_Not - 2011/08/24(水) 23:52:25.05 ID:??? (+38,-29,-117)
    >>688
    デフォでもそれは、ソースからのmake時の設定に関してのこと。
    ソースからではなくてパッケージとしてのインストール(rpmなど)から、
    インストールだとパッケージが別になっていることがある(RHEL系は別だね)
    そのパッケージ(php-xml)をインストールしてあるかは
    >phpのdomはデフォで有効だけどな
    とは別問題。
    システム構築したことある人間なら常識的なことで
    >>688の発想はないぞ。
    690 : Name_Not - 2011/08/24(水) 23:52:39.46 ID:??? (+36,-30,-61)
    >>686
    [\s\S]*$ が意味不明だし、>>678のパターンを回避できてない(最長一致だからたまたまマッチしてるだけ)

    alert(/<body(.*?)>([\s\S]*)<\/body>[\s\S]*$/.exec('<body></body><!-- </body> -->')[0]);

    さあどうする?(正規表現で不可能とはいわないが、現実的じゃない)
    691 : Name_Not - 2011/08/25(木) 00:03:40.39 ID:??? (+55,+27,+0)
    >>690みたいな粘着キモいな
    692 : Name_Not - 2011/08/25(木) 00:06:42.13 ID:??? (+24,-9,-16)
    JavaScriptで正規表現を採用すべき理由はあるんだろうか
    693 : Name_Not - 2011/08/25(木) 00:08:47.47 ID:??? (-12,+14,-14)
    PHPの話はスレ違いですぜ
    http://hibari.2ch.net/test/read.cgi/php/1311803617/
    694 : Name_Not - 2011/08/25(木) 00:09:44.19 ID:??? (+62,+29,-9)
    >>689
    レン鯖でのシステム構築の経験は無いからわからんわ
    695 : Name_Not - 2011/08/25(木) 00:15:21.69 ID:??? (+13,-29,-136)
    >>692
    少なくとも今回のパターンだと無駄なdomをオブジェクトとして追加するより変数内ですべての処理ができた方が少なからず消費メモリに良いのでは?
    実際にphpも話題に出ているから書くとphpだと変数内の文字列に対してdomをいじれる。
    javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
    696 : Name_Not - 2011/08/25(木) 00:16:17.64 ID:??? (+33,-29,-9)
    >>686の[\s\S]*$は俺もわけわからん
    何か意味ある?
    697 : Name_Not - 2011/08/25(木) 00:17:56.43 ID:??? (+62,+29,-6)
    >>696
    ありとなしでトレースしてみれば良いんじゃない?
    698 : Name_Not - 2011/08/25(木) 00:21:44.33 ID:??? (+48,-29,-128)
    >>695
    誤爆の危険性よりもシンプルなコードを重視してるのか
    HTMLパーサを正規表現で書くことがどれだけ面倒かを理解している人は採用しないと思ってた

    > javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
    createHTMLDocument では要件満たせない?これを知らないから正規表現を採用するのかな
    699 : Name_Not - 2011/08/25(木) 00:26:30.37 ID:??? (+4,-29,-152)
    >>698
    >> javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
    >createHTMLDocument では要件満たせない?これを知らないから正規表現を採用するのかな
    createHTMLDocumentはDocumentオブジェクトを生成するメソッドであって変数ではないぞ。
    おまえこそ
    >これを知らないから
    な状態。恥ずかしいから知ったかぶりするなよ。
    700 : Name_Not - 2011/08/25(木) 00:29:32.51 ID:??? (+69,+29,-90)
    >>698
    >誤爆の危険性よりもシンプルなコードを重視してるのか
    シンプルと言うより処理的な効率性(メモリ消費やアルゴリズム的)だろ?
    あの文書どう読んだらシンプルという結論になるんだ?

    >これを知らないから正規表現を採用するのかな
    なんて書く前におまえの中の日本語理解力をどうにかしろよ。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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