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

    私的良スレ書庫

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

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - window.open + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    652 : 634 - 2009/11/16(月) 19:24:46 ID:VFLw7WPT (-25,+29,-4)
    だ、誰かお助けを・・・
    655 : Name_Not - 2009/11/16(月) 23:00:41 ID:??? (+7,-29,-27)
    >>645
    読み込んだだけでdocument.writeするjsをクリックイベントで読み込ませるのはどうかと思うけど、
    document.writeを上書けば何とかなるんじゃ
    656 : Name_Not - 2009/11/17(火) 00:30:45 ID:??? (+26,-30,-66)
    >>654
    繰り返しになるけど、NSResolverがどう動こうと、XPath式の中のプレ
    フィックスなしタグ名は「名前空間なし」と決まっているの。

    だから、この場合はXPath式の中でプレフィックスを付けて自分で
    NSResolverを提供するか、//*[local-name()="body" and namespace-url()="..."]
    と書く必要がある。

    657 : 634 - 2009/11/17(火) 00:36:14 ID:??? (+59,+28,+0)
    >>656
    理解できました。ありがとうございます。
    658 : Name_Not - 2009/11/17(火) 10:15:03 ID:??? (-1,-29,-53)
    文字列をつくるのに、クオテーションやダブルクオテーションを使いますが、Perlのように
    q/文字列/ みたいな記法はないのでしょうか?
    659 : Name_Not - 2009/11/17(火) 10:42:53 ID:??? (-6,-29,-11)
    RegExp コンストラクタ
    660 : Name_Not - 2009/11/17(火) 11:24:00 ID:??? (+43,-30,-46)
    q/文字列/みたいな記法はないが似たような事は可能

    function q(s) {
     s += "";
     return s.replace(/\//g, "");
    }

    var a = q(/"""'''/);
    alert(a);
    661 : Name_Not - 2009/11/17(火) 12:48:16 ID:??? (+107,+29,-2)
    >>660
    なるほど、関数を作れば似たようなことができるんすね。
    663 : Name_Not - 2009/11/17(火) 16:20:07 ID:??? (+52,+29,+0)
    教授はあげません
    664 : Name_Not - 2009/11/17(火) 16:42:07 ID:??? (+43,+25,-1)
    ご教示だな。
    666 : Name_Not - 2009/11/17(火) 20:20:12 ID:PFN85Hw+ (+32,+29,-130)
    サーバ負荷が高まった時に、レスポンスが遅くてイラついた
    ユーザがリロードするのを抑制したくて、とりあえず

    サーバ側で高負荷時にフラグを立てて
    JS側で、フラグONなときにショートカットとF5を
    抑制することにしたんですが、

    リロードそのものをどうこうすることって、できるんかね?
    667 : Name_Not - 2009/11/17(火) 20:32:27 ID:??? (+54,+17,+0)
    うざす
    668 : Name_Not - 2009/11/17(火) 20:50:41 ID:??? (+68,-30,-97)
    >>660
    斬新な発想だなw
    s += "";は文字列変換したいんだよな? String()でキャストしたほうが見た目もパフォーマンスもいい
    あと replace(/\//g, "")だと/が全部消える。replace(/^\/(.*)\/$/g, "$1") とか。
    で、こんな感じ。
    function q(s) {
     return String(s).replace(/^\/(.*)\/$/g, "$1");
    }
    たださ、これ、q(/[/) とかがシンタックスエラーになるのよ。
    残念だけど、実用的ではないな。
    669 : リリン ◆1Fy - 2009/11/17(火) 21:06:48 ID:??? BE:366610076-PLT(36666) (+40,-29,-10)
    JavaScriptで<html></html>内に記述した日時を取得してくるって可能ですか?´`
    670 : Name_Not - 2009/11/17(火) 21:31:41 ID:??? (+47,+8,-38)
    >>668
    パフォーマンスの話をするなら結果的に呼ばれるtoString()を直に呼ぶ方がいいはず

    >>669
    DOM操作の基本レベル
    671 : Name_Not - 2009/11/17(火) 21:38:16 ID:??? (+39,+2,+1)
    >>669
    可能です。
    672 : Name_Not - 2009/11/17(火) 21:54:14 ID:??? (+106,+30,-31)
    >>668
    /にしても[にしても(にしても、あんたのように何が書けて何が書けないかが
    分かるヤツならどうとでもなるでしょ。
    実用的って…んなもの考えて書いちゃいないって。勘弁してよw
    使いたいヤツが使えるようにすりゃいいのよ。
    673 : Name_Not - 2009/11/17(火) 22:05:50 ID:PFN85Hw+ (+35,+29,-20)
    >>667
    やっぱ無理かー。
    いろいろ調べたんだけど、リロード自体とちゃんと向き合って
    どうこうしたのは見つからんし。
    674 : リリン ◆1Fy - 2009/11/17(火) 22:31:35 ID:??? BE:392796959-PLT(36666) (+9,-30,-45)
    >>670
    >>671
    var obj = document.getElementsByTagName("html").innerText;
    alert(obj);

    こんな感じでつか?
    あんでぃふぁいんど としかでねー<(゚Д゚;)>ぬおーー
    675 : Name_Not - 2009/11/17(火) 23:25:11 ID:??? (+74,+29,-36)
    >>672
    アイデアは素直に面白いなーと思ったけど、
    実用的じゃないと鵜呑みにしちゃってる感じの>>661 は困るんじゃないかなと思ってさ。
    って、それなら安価を661にするべきだったな。すまそ
    677 : Name_Not - 2009/11/17(火) 23:45:48 ID:??? (+57,+29,-20)
    カスとか言いながらググッてくれた貴様の優しさに東京市民が泣いた
    678 : Name_Not - 2009/11/18(水) 00:16:20 ID:??? (-6,-29,+0)
    1943年東京都誕生
    679 : Name_Not - 2009/11/18(水) 04:38:52 ID:??? (+1,-29,-1)
    >>676
    safe サーチを off にして何を検索してるんですか//
    680 : Name_Not - 2009/11/18(水) 18:28:19 ID:??? (+52,+29,+0)
    何ってナニでしょ
    681 : Name_Not - 2009/11/18(水) 18:29:32 ID:??? (+52,+29,-1)
    んま~お下品ですこと
    682 : Name_Not - 2009/11/18(水) 21:03:32 ID:??? (+54,-30,-122)
    >>661
    実用に耐えられるものを書いた(つもり)

    /*******************************************
    引数:正規表現リテラル(/ [ ] ( ) これらはエスケープ)
    *******************************************/
    function q(s) {
     function f(s1, s2, s3) {
      if (s3.charAt(s2 + 1) != '\\') return '';
      return s1;
     }
     return s.source.replace(/\\/g, f);
    }

    var a = q(/\\ \/ \[ \( " '/);
    alert(a);

    穴があったらフォローしてちょ
    683 : Name_Not - 2009/11/18(水) 21:08:29 ID:??? (+52,+29,+0)
    穴があったら俺は入れる。
    684 : Name_Not - 2009/11/18(水) 21:11:50 ID:??? (+57,+29,-10)
    おめーら下品すぎんだよ
    おれのチンポでもしゃぶってろこのチンカスマンゲ
    685 : Name_Not - 2009/11/18(水) 21:23:39 ID:??? (+91,+23,-19)
    >>682
    関数にしてまで利用する処理なのか?それ
    686 : Name_Not - 2009/11/18(水) 21:38:37 ID:??? (+69,+29,-31)
    >>685
    知らん。
    クォーテーションをエスケープすんのが面倒なんじゃないの。
    687 : Name_Not - 2009/11/18(水) 22:46:56 ID:??? (+10,-30,-49)
    >>682

    function q(s) {
     function f(s1) {
      return s1.substring(0, s1.length / 2);
     }
     return s.source.replace(/\\+/g, f);
    }
    688 : Name_Not - 2009/11/18(水) 23:24:18 ID:??? (+57,+29,-37)
    ぶっちゃけると、エスケープの手間を省こうとして
    エスケープしないといけない文字の種類を増やしてるのは本末転倒だよね
    689 : Name_Not - 2009/11/19(木) 08:10:58 ID:??? (+9,-30,-282)
    以下サイトにクロージャーの説明がありますが、

    第3回 変数の宣言とスコープ - @IT
    http://www.atmarkit.co.jp/fdotnet/ajaxjs/ajaxjs03/ajaxjs03_04.html

    function myClosure(init) {
    var cnt = init;

    return function() {
    return ++cnt;
    }
    }

    var result = myClosure(10);

    window.alert(result()); // 11
    window.alert(result()); // 12
    window.alert(result()); // 13


    以下のように引数をそのままクロージャーに入れるのとは何か違いはありますでしょうか?

    function myClosure(init) {
    return function() {
    return ++init;
    }
    }
    690 : Name_Not - 2009/11/19(木) 08:53:33 ID:??? (+42,-30,-101)
    >>689
    その例だと見てるスコープが同じだから違いがないなぁ
    上の例は、

    var cnt = init;

    で初期化を考えてるんだろうから

    var cnt = init || 0;

    の方が良い気がする。引数なければ1からカウントってことで。
    691 : Name_Not - 2009/11/19(木) 09:53:59 ID:??? (+50,+23,+1)
    >>690
    なるほど。
    レス、㌧
    692 : Name_Not - 2009/11/19(木) 09:58:43 ID:??? (+9,-30,-58)
    Number の初期化に論理和演算子使う奴とかまだいたのかよ
    arguments.length まで頭回らなくてもせめて Number() してくれ

    alert(let (x = 'num') x++);
    693 : Name_Not - 2009/11/19(木) 11:23:21 ID:??? (+57,+29,-24)
    or使うと不幸になるパターンあるのはわかるがそのコードでなにが言いたいのかわからねー
    NaNはNaNだろ、つーかサンプルコードで当然のようにlet使うなよ
    694 : 690 - 2009/11/19(木) 12:49:10 ID:??? (+4,-29,-73)
    >>692
    ごめん、Numberの初期化で論理和演算子ってダメなの?今まで気にしてなかった
    arguments.lengthの話ってことは0だとfalseになるからってこと?

    それと、alertのコードの意味がよくわからないのでそれも教えて
    695 : 636 - 2009/11/19(木) 19:22:37 ID:??? (+52,-30,+0)
    onclickでブログパーツを表示させたいと相談した>>636です。
    あれからいろいろやってみて、↓でかなりいい線まで来ました。

    <script type="text/javascript">
    function Disp(js, x, y) {
    document.getElementById('box').innerHTML = '<iframe id="blogparts" name="blogparts" width="' + x + ' height="' + y + '" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"><\/iframe>';
    var iframeDocument = document.getElementById('blogparts').contentWindow.document;
    iframeDocument.open();
    iframeDocument.writeln('<html><head><title><\/title><\/head><body style="margin: 0px; padding: 0px;">' + js + '<\/body><\/html>');
    if (!document.all) iframeDocument.close(); //IE除外※
    return;
    }
    </script>

    <div id="box"></div>
    <a href="javascript:void(0);" onclick="Disp('<script type="text/javascript\" src="ほにゃらら.js"></script>', 160, 400); return false;">表示</a>

    innerHTMLで書き出すのでは「ほにゃらら.js」を実行できないので、iframeを書き出して、その中にdocument.writeしてしまおうという発想です。

    つづく
    696 : 636 - 2009/11/19(木) 19:24:07 ID:??? (+3,-30,+0)
    つづき

    この方法で、動作確認しているFirefox 3.5.5、Google Chrome 3.0、Safari 4.0.4では完璧に表示できました。
    しかし、IE 8.0ではcontentWindow.documentをclose()すると、ほとんどの場合、エラーも出ないままにIEが固まってしまいました。
    ※その回避のための「if (!document.all) iframeDocument.close();」

    そこでまた相談なのですが、
    1)IEがエラーで停止じゃなくてブラウザごとフリーズしてしまうというのは、この方法は他のブラウザでたまたま表示できているだけで、JavaScript的になにか根本的にまずいことをしてしまっているのか?
    2)手法として問題ないのであれば、今のスクリプトだと、当然IEではcloseしていないので「ほにゃらら.jsをダウンロードしています」とステータスバーに表示されたままになってしまう。
     closeしても絶対フリーズするわけではなく、タイミングによっては表示ができるので、おそらくcloseのタイミングが早すぎるのだと思われる。
     ほにゃらら.js読み込み完了を判別してcloseする方法はないか?
     やってみたこととして、
     「<iframe ~ onload="self.contentWindow.document.close();">」
       ↑iframeにonloadを仕込む。
     「iframeDocument.writeln('<html> ~ <\/html><script type="text/javascript">self.document.close();<\/html>');」
       ↑contentWindow.documentに書き出す内容の最後に自身をcloseするスクリプトを追記する。
     「iframeDocument.writeln('<html> ~ <body ~ onload="self.document.close();">');」
       ↑contentWindow.documentに書き出したbodyにonloadを仕込む。
     は、いずれもダメでした。

    いかがでしょうか?どうかいいアイデアをご教示願います。
    698 : Name_Not - 2009/11/19(木) 19:38:53 ID:istAjeXH (+2,+0,-37)
    javascriptを覚えることとjqueryやprototypeを覚えるのは
    どちらがweb制作現場で使える技術になりますか?
    699 : Name_Not - 2009/11/19(木) 20:07:46 ID:??? (+35,-30,-60)
    最低限、HTML(HTML4.01/5.0/XML/XHTML1.0|1.1),CSS(CSS2.1/3),JavaScript,PHP,WAI(アクセシビリティ)は使えるようになった方が良い
    700 : Name_Not - 2009/11/19(木) 20:26:28 ID:??? (+79,-29,-82)
    >>695
    どこで利用したいのかわからないけど、思いついたこといくつか。
    1、ほにゃらら.jsを書き換えられるなら関数で包んで、onclick=その関数
    2、自分のウェブページとかでページをうpできるなら、ほにゃららJSを埋め込んであるページを作る。iframeのsrc="~”の~部分にそのページを入れる。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : - window.open + 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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