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

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    151 = :

    >>140
    これは簡単で、タイプライタではシフトキーを押すと活字ハンマー全体を
    上に持ち上げて大文字の活字が紙に当たるようにしていた。なので持ち上げる
    からupperなんだと思うよ。

    152 = :

    IE8で、thisの指す内容を無理やり書き換えることは出来ませんか

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
    <head>
    <title>foobar</title>
    </head>
    <body>

    <div id="foobar">foobar</div>

    <script type="text/ecmascript">
    var foobar = document.getElementById('foobar');
    foobar.attachEvent('onclick', function(){
    this = event.srcElement;
    this.firstChild.data = 'IE';
    });
    </script>
    </body>
    </html>

    153 = :

    >>152
    Function.prototype.call を使えば出来る。

    154 = :

    すみません。コメントを外すとokで、コメントのままだとngです。

    firefox3.6.13で、Webサーバはtomcat6.0.32です。

    155 = :

    >>154
    sleep(1); を呼び出した(コメントを外した)場合。
    http://jsbin.com/olope4/2

    期待通りに動かない。セレクトボックスが選択できてしまう。
    Firebug でも select が増殖しているようには見えなかった。代わりに "sleep is not defined" が増殖する。

    156 = :

    >>153
    ありがとうございます。上手くいきました

    var foobar = document.getElementById('foobar');
    foobar.attachEvent('onclick', function(){(function(){
    this.firstChild.data = 'IE';
    }).call(event.srcElement)});

    157 = :

    >>156
    素朴な疑問なんだが、

    document.getElementById('foobar').attachEvent('onclick', function (event) {
     var element = event.srcElement;
     element.firstChild.data = 'IE';
    });

    これでダメな理由は何なんだろう?

    158 = :

    function () { this.firstChild.data = 'IE'; } を既に定義していて、addEventListener と attachEvent の両方で使いたかったに一票。
    this と event.srcElement は対応しないはずだけどね。

    159 = :

    >>157-158
    すみません。実際に使わせて戴いた部分は>>158の通りです

    Element.prototype.addEventListener = function(type, listener, useCapture){
    var target = this;
    target.attachEvent('on' + type, function(){
    listener.call(target, event);
    });
    };

    160 = :

    >>159
    そのコードを書いた気持ちはわかるんだが、addEventListener と互換性が取れてないのが気になる。

    >157 にもあるが attachEvent は第一引数で event を取れるから、window.event を使わなくていい
    ・this は event.currentTarget と等価 (event.target じゃない)
    ・this も書き換えるなら event も書き換えた方が後々楽になると思う。 event.target と event.currentTarget を定義するだけでも大分違う。
    ・attachEvent は onload 時に event.srcElement が null なので、対処を

    161 = :

    重要なことを書き忘れていた。
    何よりも、>159 が拙いのは detachEvent 出来なくなること。
    Element.prototype.addEventListener の引数 listener は書き換えられているので、元々の listener では detachEvent することが出来ない。
    この問題に対応するためには元々の [this, type, listener, useCapture] をキャッシュしておき、removeEventListener 時に照合するしかない。

    162 = :

    >>151
    なるほど、タイプライターも上下で分けてるね。
    歴史的な順番としては印刷技師の職業習慣が先になるのだろう。
    スレチだけど勉強になりました^^

    163 = :

    >>137
    ラージって言わないんだ
    デカルチャーだわ
    アッパーケースって言うのが普通なのか…恥ずかしい

    例えば新人が定数変数をロウで書いてたら、アッパーケースで書き直して。って言い方で指示するの?


    labelは何て呼んでる?
    レーベルだよねw流石にラベル何ていわねーわなw

    165 = :

    JavaScriptってバイナリファイル扱えますか?
    JavaScriptでバイナリエディタみたいなものを作りたいのですけど
    試しに画像ファイルを読み込み16進ダンプしてみたのですが
    手持ちのバイナリエディタと比べると異なるものになってしまいます
    画像ファイルはXMLHttpRequestで取得し
    renponseTextにhttp://phpjs.org/functions/bin2hex:361
    こちらのbin2hex関数をかませて16進ダンプを行いました
    prototype.jsを使用したコードですが

    new Ajax.Request("test.png",{
    method: "get",
    onComplete: function(req){
    document.write(bin2hex(req.responseText));
    }
    });

    こんな感じになります
    どこを手直せばいいのかそもそも不可能なのかご存知の方アドバイスお願いします

    166 = :

    >>163
    日本語ではラベルです。
    レーベルでも通じるけどラベルのことねと返されるでしょう。
    GAIJINにはレーィボーと言いましょう。

    167 = :

    日本語を使えよ。大文字でいいじゃん。ラベルも日本語といや日本語。
    レーベルというのはレコードやCDの1つのブランドを表す日本語。
    カルテもカルタもカードもトランプも日本語。

    169 = :

    document.querySelectorAll("#tar").length
    で確かめたらずっと1だったから問題ないと思うよ。
    Firebugsがおかしいって可能性は?

    170 = :

    >>168
    なるほどね。これで如何?
    http://jsbin.com/olope4/3

    171 = :

    >>170
    おお、増えませんね。
    やはり、innerHTMLが悪さをしてるんでしょうか。

    先のコードはサンプルで、実際のselectタグには、
    Ajaxを利用してサーバから持ってきた情報をもとに出力するので、
    単純には行きませんが、どの辺が問題なのでしょうか。
    それとも、FireBugsの問題で、>>169のとおり、実際には問題ないのかな。

    172 = :

    http://d.hatena.ne.jp/k12u/20061216/p1
    こちらを参考に自己解決しました
    一応コード出しておきます

    new Ajax.Request("test.png",{
    method: "get",
    onCreate: function(req) {
    req.transport.overrideMimeType("text/plain; charset=x-user-defined");
    },
    onComplete: function(req){
    var bytes = [];
    var res = req.responseText;
    var len = res.length;
    for (var i = 0; i < len; i++) {
    bytes[i] = res.charCodeAt(i) & 0xff;
    }
    document.write(bin2hex(String.fromCharCode.apply(String, bytes)));
    }
    });

    173 = :

    >>167
    大文字って言い方だと新人によっては2バイト文字で書く奴が普通にいるから困る
    かと言ってupperCaseで書けと言っても理解出来る筈もなく

    174 = :

    >>173
    コンピュータの素養がある者が、
    大文字を2バイト文字と解釈するって?
    それはその個人の問題であって、一般的な問題とは思えない。

    176 = :

    >>175
    String.fromCharCode(0x52); // R

    177 = :

    ドラッグ&ドロップでファイルをアップロードさせるコードを書いています。
    addEventListener('drop',function~でドロップイベントを拾って、e.dataTransfer.files[0]で一つめのファイルのオブジェクトを拾って
    それをバイナリで読み込んで、そこからXMLHttpRequestでsendする値を書いて、postする流れです。
    が、バイナリをアップしてみてもファイルが壊れてしまいます。例えば30kbの画像を送信したら50kbになる。バイナリを見てみると
    最初の1kb位は同じ所がありjpegっぽいヘッダーが出ているのですがそれ以降は全く違う値になっています。
    最初の方は一部同じ、序盤以後は全く違うと、文字化けしているような症状になっているのですが、何故文字化けするのでしょうか。
    readAsBinaryStringで読み込んでいるので文字コードの変換処理が入る箇所が無いように思えます。
    サーバーサイドはphpでバイナリをいじくる処理は一切していませんし、普通にjsを使わずinput type=fileで送信したファイルは当然そのまま保存されています。
    以下がコードの箇所です
    dropobj.addEventListener('drop',function(e){
    e.preventDefault();
    console.log(e.dataTransfer.files[0]);
    var reader = new FileReader();
    filename=e.dataTransfer.files[i].name;
    filetype=e.dataTransfer.files[i].type;
    reader.onload=function(e2){
    upload(filename,filetype,e2.target.result);
    }
    reader.readAsBinaryString(e.dataTransfer.files[i]);
    },false);
    ここまででファイルをブラウザのfilereaderで読み込んでいます。続きます。

    178 = :

    続きです
    function upload(filename,type,value,mode){
    var func_makeboundary1session,senddata="";
    func_makeboundary1session=function(name,filename,contenttype,value,boundary){
    var res="";
    res+='\r\nContent-Disposition: form-data; name="'+name+'"';//"
    if(filename!=""){res+='; filename="'+filename+'"';}//"
    res+="\r\n";
    res+="Content-Type: "+contenttype+"\r\n\r\n";
    res+=value+"\r\n";
    res+="--"+boundary;
    return res;
    }
    if(mode==false && loading==true){return;}
    var httpoj = new XMLHttpRequest();
    httpoj.open("POST","index.php",true);
    httpoj.onreadystatechange = function(){
    if(httpoj.readyState==4){alert(httpoj.responseText);}
    }
    var boundary ='----MultiPartFormBoundary' + (new Date()).getTime();
    senddata+="--"+boundary;
    senddata+=func_makeboundary1session("file",filename,type,value,boundary);
    senddata+="--";
    httpoj.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
    httpoj.send(senddata);
    }

    func_makeboundary1sessionでmultipart/form-dataを作成し送信しています。サーバーのphp、html、jsファイル全て文字コードはUTF-8です
    multipart/form-dataの情報はhttp://adiary.blog.abk.nu/012http://www.kanzaki.com/docs/html/htminfo32.html を参考にしました

    http://github.com/blueimp/jQuery-File-Upload/wiki/Options これを使おうと思いもしましたが、ファイルのアップロードと同時に別のフォームのテキストとかも送らないといけないので諦めました
    ブラウザはchrome、OSはvistaです 以上です。よろしくお願いします

    179 = :

    jsでファイルをアップロードする一番簡単なのはFormData使う方法だけどHTML5だからFirefox4、Chromeぐらいしか対応してないんだよね
    http://ideone.com/FwufK
    FormData使わずにやるならbase64でエンコードしてから送ったほうがいい、
    getAsDataURLでbase64の値が取れるからサーバーサイドで戻すのが確実

    180 = :

    今気づいたけど
    > Q9. Aタグのonclickで動作指定してるのですが時々動きません…
    > A9. 「onclick="...;return false"」としないとページ移動しちゃうから。

    preventDefaultでもできるよねというかこっちが正統派なきがするけど。
    http://developer.mozilla.org/ja/DOM/event.preventDefault

    181 = :

    >>179
    どうも。FormDataは知らなかった。

    183 = :

    >>176
    できた!全角の問題が厳しかったが自力でできたよ、ありがとう

    186 = :

    Q5 にIEのバージョンを書いておいた。他サンプルコードの修正。
    http://fiddle.jshell.net/vSqKr/14/show/

    187 = :

    >>186おつ
    目次を付けたよ
    http://fiddle.jshell.net/vSqKr/15/show/

    188 = :

    >>187
    いいね。
    目次で見ると Q14 が結構長いな。他に合わせて

    Q14. setTimeout() やイベントハンドラ関数に設定するコードに this を含めたいのですが…

    でいい気がするんだけど、どうだろう?

    189 = :

    >>188
    確かに長いから変えてみた。あと:target疑似要素で目次クリックでハイライトするように。
    http://fiddle.jshell.net/vSqKr/16/show/

    190 = :

    やってみた。(16 で誰かやってたっぽいw)
    http://fiddle.jshell.net/vSqKr/17/show/

    191 = :

    すまない、被ってしまった。>>189 を採用してくれw

    192 = :

    193 = :

    更新する度にコンテンツと目次の同期を取るのは面倒かもしれないので、目次を JavaScript で生成するようにしてみた。
    http://fiddle.jshell.net/vSqKr/19/show/

    196 = :

    Faceboxライブラリで手前にHTMLを表示したいのですが、画像は普通に表示できるのに、htmlファイルは指定してもうまく表示出来ません
    やり方もしくは参考になるサイトをご存知でしたらご教授ください

    198 = :

    FAQの目次はもうちょっと行間あけるべきだな。見辛い。

    199 = :

    改行厨が気分で3行も4行も空けかねないので意見は正確に。


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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