元スレ+ JavaScript の質問用スレッド vol.89 +
JavaScript覧 / PC版 /みんなの評価 :
651 = :
>>649
同期とれるよ
http://jsfiddle.net/kk7q8/
652 = :
せめて再現可能なコードを書いて欲しい
653 = :
みなさんレスどうもです。
>>650
現状その手段を用いてます。
>>651
例えば①で移動先が描写の重い処理や回線速度が遅かったら
たぶん完全に表示しきる前にalert出ます。
>>652
勉強中な身うえ無理です><
654 = :
DOMエレメントに変数を記録しておく事って出来ませんか
例えば
addObj= document.createElement('div');
addObj.innerHTML="ほげほげ";
document.body.appendChild(addObj);
で、どんどんオブジェクトを作っていく時、addObjに外部から見えない変数、オブジェクト、配列を記録させたいです
serializeしてsetAttributeは思いついたのですが、serializeせずに直接データを入れる方法があればそっちを使いたいです
655 = :
>>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 = :
>>653
非同期になるはずはないんだけどね
書いてない他の処理が影響してそうな感じがする
658 = :
>>656
表面の描画は基本的にスクリプトと非同期
要素の位置を変更しても基本的に直ちに描画はされない
スクリプトで非常に重い処理をし続ければそれが終わるまで描画が実行できない
そのためのsetInterval
659 = :
>>654
質問内容とは関係ないんだけど、
変数名にaddObjってのに違和感がある。
動詞は変数名じゃなく関数名に付けるべきだ。
660 = :
var fuga = {};
fuga['日本語'] = 'ほげほげ';
fuga['英語'] = 'hogehoge';]
シンプルでいいとは思うのですが、ハッシュキーにマルチバイト文字をいれたくないのですが、いい改善方法ないでしょうか?
661 = :
fuga['ja'] = 'ほげほげ';
fuga['en'] = 'hogehoge';
何がしたいのかがいまいちわからない。
多言語対応の定義をどうすればいいのかという事?
663 = :
>>661
他にうまくデータ型を持てるように出来ればいいのですが、
もっともシンプルなのでできればハッシュがいいのですが、マルチバイトは避けたいので、
例えば多重配列にして、
var fuga = [
['日本語', 'ほげほげ'],
['英語', 'hogehoge']
];
なんかでもいいのですが、何かいい方法がないかと思って聞きました。
すみません。色々説明が下手で日本語も多分おかしいです。
664 = :
fuga['ja'] = ["日本語", 'ほげほげ'];
fuga['en'] =["英語", 'hogehoge'];
やりたいことがわからんな。
全言語のリスト(selectとか)作るなら>>663の配列でいいと思う。
665 = :
外部htmlファイルを読み込んでその中身を$htmlという変数に格納するところまではできたのですが
この$html内の<body>から</body>の中身のみ取得して$textへ格納する正規表現はどう書けばいいのでしょうか?
666 = :
>>663
日本語が駄目な理由を明確にしないと適切なアドバイスは出来ないと思うよ
>>660が駄目で>>663が良い理由もよくわからないし
668 = :
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 = :
<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 = :
>>668
無理矢理って感じだな。
なんか前時代的な書き方だ。
実際問題、iframeを使わずに外部ページを表示するのに
AJAXなどで外部のhtml取得。
でもその外部ファイルの<body>以外の<html>タグ、<head>内などいらない物を削除して埋め込むテキストを生成してページに埋め込むって
需要ありそうだけど情報無いよね。
671 = :
あるにはあるけどやりたい事によって処理違うし
>>668の書き方は一番無難だと思うけどな
672 = :
>>668
ありがとうございます。
つまりは正規表現だけでは無理と言うことですか?
673 = :
htmlがある程度ちゃんとしてれば正規表現でもできるよ。
>>668の手もあるってだけ。
正規表現はぐぐればいくらでも出てくる。
674 = :
>>673
>正規表現はぐぐればいくらでも出てくる。
その調べながらやっているのですがうまく動かないんです。
/<body(.*?)>(.*?)<\/body>/
こんな感じでやったのですがうまく動きませんでした。
675 = :
>>669
ねーよ
676 = :
>>674
再現出来るソース
677 = :
正規表現を削ってどこが問題なのか特定すればいいじゃん。
多分改行が問題。
678 = :
正規表現なんて使うもんじゃないと思うが…
<body>
<script>'</body>';</script>
<!-- </body> -->
<! </body> >
<![CDATA[ </body> ]]>
<p title="</body>">p</p>
</body>
679 = :
(?:<\/body>\s*(?:<\/html>\s*)?)?$
こんなもんでどうよ、
というか、今回のは書き換えるとかじゃないならiframeで直接表示でいいと思う。
680 = :
>>677
見事にその改行の問題でした。
ありがとうございます。
681 = :
必要ないかもしれないけど一応改行対策した物です。
/<body(.*?)>([\s\S]*)<\/body>/
682 = :
素直にDOM使うべきだと思うけど、正規表現で>>678にどう対処する?
683 = :
>>682
でもこれが、JavascriptだからDOMを扱えるから>>668の方法を採用できるが
これがPerlやPHP側で処理したいとなると結局、正規表現を使うことになるから
正規表現での抜き出し方法はわかっていた方が、いいとも言える。
684 = :
PHPでもDOMだしPerlでもDOMだと思うが
685 = :
>>684
PHPにおいては「DOM 拡張モジュール」が有効になってないと使えない。
だから使えないサーバの事も考慮する必要がある
686 = :
>>682
>>681をベースに考えるなら
/<body(.*?)>([\s\S]*)<\/body>[\s\S]*$/
でOK。
結局、ここに書き込んでいる人で正規表現理解しているのは>>679と質問をした>>665自身と俺だけ?
687 = :
キリッ
688 = :
phpのdomはデフォで有効だけどな
689 = :
>>688
デフォでもそれは、ソースからのmake時の設定に関してのこと。
ソースからではなくてパッケージとしてのインストール(rpmなど)から、
インストールだとパッケージが別になっていることがある(RHEL系は別だね)
そのパッケージ(php-xml)をインストールしてあるかは
>phpのdomはデフォで有効だけどな
とは別問題。
システム構築したことある人間なら常識的なことで
>>688の発想はないぞ。
690 = :
>>686
[\s\S]*$ が意味不明だし、>>678のパターンを回避できてない(最長一致だからたまたまマッチしてるだけ)
alert(/<body(.*?)>([\s\S]*)<\/body>[\s\S]*$/.exec('<body></body><!-- </body> -->')[0]);
さあどうする?(正規表現で不可能とはいわないが、現実的じゃない)
691 = :
>>690みたいな粘着キモいな
692 = :
JavaScriptで正規表現を採用すべき理由はあるんだろうか
694 = :
>>689
レン鯖でのシステム構築の経験は無いからわからんわ
695 = :
>>692
少なくとも今回のパターンだと無駄なdomをオブジェクトとして追加するより変数内ですべての処理ができた方が少なからず消費メモリに良いのでは?
実際にphpも話題に出ているから書くとphpだと変数内の文字列に対してdomをいじれる。
javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
696 = :
>>686の[\s\S]*$は俺もわけわからん
何か意味ある?
697 = :
>>696
ありとなしでトレースしてみれば良いんじゃない?
698 = :
>>695
誤爆の危険性よりもシンプルなコードを重視してるのか
HTMLパーサを正規表現で書くことがどれだけ面倒かを理解している人は採用しないと思ってた
> javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
createHTMLDocument では要件満たせない?これを知らないから正規表現を採用するのかな
699 = :
>>698
>> javascriptもdocumentオブジェクトではなくて変数内の文字列に対してdom操作ができるようになっていたらいいのにね。
>createHTMLDocument では要件満たせない?これを知らないから正規表現を採用するのかな
createHTMLDocumentはDocumentオブジェクトを生成するメソッドであって変数ではないぞ。
おまえこそ
>これを知らないから
な状態。恥ずかしいから知ったかぶりするなよ。
700 = :
>>698
>誤爆の危険性よりもシンプルなコードを重視してるのか
シンプルと言うより処理的な効率性(メモリ消費やアルゴリズム的)だろ?
あの文書どう読んだらシンプルという結論になるんだ?
>これを知らないから正規表現を採用するのかな
なんて書く前におまえの中の日本語理解力をどうにかしろよ。
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.87 + (1001) - [97%] - 2011/6/21 6:33
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.79 + (1001) - [97%] - 2010/9/11 6:50
- + JavaScript の質問用スレッド vol.84 + (1001) - [97%] - 2011/3/30 7:32
- + JavaScript の質問用スレッド vol.80 + (1001) - [97%] - 2010/11/9 2:17
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.119 + (1002) - [95%] - 2014/10/3 15:30
- + JavaScript の質問用スレッド vol.139 + (1001) - [95%] - 2019/5/27 15:15
- + JavaScript の質問用スレッド vol.129 + (981) - [95%] - 2016/5/5 8:16
- + JavaScript の質問用スレッド vol.129 + (926) - [95%] - 2017/7/27 13:45
- + JavaScript の質問用スレッド vol.109 + (1001) - [95%] - 2013/10/7 13:16
- + JavaScript の質問用スレッド vol.94 + (1001) - [95%] - 2012/1/8 15:46
トップメニューへ / →のくす牧場書庫について