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

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

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

    Firefox8でFile APIのreadAsDataURLを使ってみたんだが
    どうも読み込むファイルサイズによってはかなりの量のメモリーリークするっぽい
    使い方間違ってるのかな・・・

    <input type="file" onchange="readImageFile(this);"><br>
    <script type="text/javascript">
    function readImageFile(elm){
    var file = elm.files[0];
    if(file.type == 'image/jpeg' || file.type == 'image/png' || file.type == 'image/gif') {
    var reader = new FileReader();
    reader.onload = function(e){
    var img = document.createElement('img');
    img.src = e.target.result;
    document.body.appendChild(img);
    }
    reader.readAsDataURL(file);
    }
    }
    </script>

    402 = :

    そのリークとやらをどう確認したのか言え
    あと思いっきり循環参照なんだから切っとけ

    403 = :

    >>402
    すいません勘違いだったようです しばらく待っていたら解放されてました
    手順は、新しいタブで開く→上記スクリプトで大きい画像を数枚開く→違うページを開く→タブを消す
    の一連の動作をタスクマネージャーで監視しました

    循環参照を切るとは、この場合は具体的にどうするのですか?

    404 = :

    調べてきました この2つの方法で循環参照を切れてるでしょうか?

    スコープの外に関数を書く
    function readImageFile(elm){
    var file = elm.files[0];
    if(file.type == 'image/jpeg' || file.type == 'image/png' || file.type == 'image/gif'){
    var reader = new FileReader();
    reader.onload = fileLoaded;
    reader.readAsDataURL(file);
    }
    }
    function fileLoaded(e){
    var img = document.createElement('img');
    img.src = e.target.result;
    document.body.appendChild(img);
    }

    nullを代入して参照を切る
    function readImageFile(elm){
    var file = elm.files[0];
    if(file.type == 'image/jpeg' || file.type == 'image/png' || file.type == 'image/gif'){
    var reader = new FileReader();
    reader.onload = function(e){
    var img = document.createElement('img');
    img.src = e.target.result;
    document.body.appendChild(img);
    reader = null;
    }
    reader.readAsDataURL(file);
    }
    }

    405 = :

    >>404
    createObjectURLを使うことをおすすめする

    406 = :

    >>405
    createObjectURLはキャッシュを0MBにして何度か使っていたら読み取れなくなりました
    もしかしたらこれはキャッシュ的に使うもので自動的にデータが破棄されるのではないでしょうか?

    410 = :

    Firefox3.6.2はやめろ

    414 = :

    Element.classList.toggle

    415 = :

    >>409
    ありがとうございます。ttp://allabout.co.jp/gm/gc/24097/#2 を参考にして。
    UTF-8とShift-JISを併用し日本語読み込みも出来ました。

    しかしながら、IEとFFではOKだったのですが、GoogleChromeではアラートが出るものの
    その中にテキストは表示されません。
    上記参考サイトの記述の場合、どう改造すれば良いでしょうか?

    416 :

    >>415
    クロームでそのページ見てみたけど、普通に動いとるよ?

    なにか間違えてるんだろうから、クロームのインスペクタ起動して
    エラーなりワーニングなり出てないか確認してみ

    それでもわからんかったら>>1にあるコード投稿サイトにコード書いてみて

    417 = :

    あ、やっとつながった
    落ちてたよね

    418 = 416 :

    あ、クロームはインスペクタって言わないんだな
    メニューの表示→開発/管理→JavaScriptコンソール、で

    で、よく見てみたらちゃんとは動いとらんかったごめんなさい
    リクエストが"http://allabout.co.jp/gm/gc/24097/test.txt/"ってなってて404返ってきてる

    419 = :

    >>414
    ありがとうございます、toggleにこんな使い方があったんですね
    返事送れてすみません

    420 = :

    >>417
    落ちてたというか、今 2ch が…

    421 = :

    >>420
    FOX強制捜査されてんのか
    ざまぁwww

    422 = :

    下のコードで(1)だと常にset=cntが実行されます。(2)だと正常に判定が行われます。なぜ?

    (1)
    if( parseFloat( cnt ) > parseFloat( pool[key] ) ){
    set = pool[key];
    } else {
    set = cnt;
    }

    (2)
    if( parseFloat( cnt ) > parseFloat( pool[key] ) ){
    set = pool[key];
    } else if( parseFloat( cnt ) <= parseFloat( pool[key] ) ){
    set = cnt;
    }

    423 = :

    値も見せろよ

    424 = :

    配列の質問
    a=new Array(10,4);はa=[10,4];と同じように動きますが、
    何か違うのですか?どっちが推奨されてますか?

    425 = :

    >>423
    keyは、321から338までの数値データ。
    pool配列はそれぞれ0~40000ぐらいの数値をテキストデータでもってる。
    setは var set=0 で初期化。
    cntは 1000ぐらいの数値をテキストデータでもってる。

    という感じ。

    426 :

    >>424
    newは使うな派閥というのがあってだな

    427 = :

    >>425
    再現できない

    var cnt = 1000, pool = [], key = 321;
    pool[321] = '100';
    console.log(parseFloat(cnt) > parseFloat(pool[key])); // true

    428 = :

    >>418 (GoogleChromeでのテキスト読み込みについて)

    調べたところ次のようなことが分かりました。

    http://www.keyton-co.jp/blog/month/2011/04
    GoogleChromeではローカルファイルの読み込みに制限がかかっており、他のファイルを読み込むことができません。
    この場合、起動オプションに「--allow-file-access-from-files」を付けることで読み込めるように変更できます。

    しかし、この通りに起動オプションを変更したのですが、まだ駄目です。

    なお、ChromeのJavaScriptコンソールで調べたところ、読み込み時に
      MLHttpRequest cannot load テキストファイル
      Cross origin requests are only supported for HTTP.
    と出て、アラートボタンでOKを押すと
      Uncaught Error: NETWORK_ERR: 元コードのhttpoj.send(data);の行を指し、
      XMLHttpRequest Exception 101
    と出ます。

    考えられる原因は何でしょうか?

    429 = :

    >>427
    だよね。再現可能な最小限コードってのが難しい。
    まあ、(2)にするとまともに動くのであきらめるわ。

    430 = :

    (自己解決しました)
    「--allow-file-access-from-files」は必要だったのですが、対象のHTMLを
    右クリックで「プログラムから開く」でやると駄目で、予めChromeウインドウを開いて
    おいてそこに対象HTMLをドラッグ&ドロップすればOKでした。

    ちょっとメンドクサイ

    432 = :

    JavaScript The Good Partsに名前(アルファベット1文字以上と
    _と数字)は演算子として利用可能と載ってたのですが、
    演算子は+,=,?:などと認識してます。ここでの「演算子として利用
    可能」とはどいった意味なのでしょう?

    433 = :

    どこの章のどこの項のどこの行よ
    何を語ってるページなのよ

    434 = :

    >>415
    ようは~.htmlでcsvファイルを読み込みできたらいいんだろ?
    ↓これでできる。
    <html><head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title></title>
    <script type="text/javascript">
    function sendRequest(){
    var xmlhttp;
    try{//ie用
    try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.6.0");
    getCoDivFromName("hantei").innerHTML=("Msxml2.XMLHTTP.6.0");}
    catch(e) {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP.3.0");}
    xmlhttp.onreadystatechange = function(){
    (xmlhttp.readyState == 4 && xmlhttp.status== 200)?processRequest(xmlhttp):processRequest2(xmlhttp);
    };
    }catch(e){//firefox、その他ブラウザ用
    xmlhttp = new XMLHttpRequest();
    xmlhttp.onload = function(){
    (xmlhttp.status== 200)?processRequest(xmlhttp):processRequest2(xmlhttp);
    };
    }
    xmlhttp.open("GET", "001.csv");
    xmlhttp.send(null);
    }

    435 = :

    //434の続き
    function processRequest(xmlhttp){
    document.getElementById("date").innerHTML=xmlhttp.responseText;}
    function processRequest2(xmlhttp){
    document.getElementById("date").innerHTML=("Error");}
    window.onload=sendRequest;//window.onload=onButtonClick();で動かない
    </script>
    </head>
    <body>
    <span id="date">・・・</span><br/>
    </body>
    </html>
    jQueryを使えば簡単にできるらしいが、それは今勉強してるから
    他の人に聞いてくれ。
    001.csvは001.phpでも001.txtでも読み込み可能。xmlHttpRequesを生成
    して通信する。その際xmlHttpReques生成はieとその他ブラウザで分ける。
    このでローカルホストにアクセスしたら動く。

    436 = :

    >>433
    JavaScript The Good Partsの第2章文法の2.2 名前(P9)のとこです。
    そこに、「名前は、命令文、変数、引数、プロパティ名、演算子、ラベル
    として利用することができる」とあります。

    438 = :

    new演算子の予約後newは「名前」と解釈するのですか?
    名前には予約後が利用できないと書いてありますが、
    予約後を名前に含めるということですか。

    439 = :

    キミ前にどっかで見た気がするな

    440 = :

    >>436
    どう考えても識別子の誤植

    >>434
    HTMLぐらいマトモに書け、後で苦労すっぞ
    それだとメモリーリークすっからな

    442 = :

    JavaScriptだけで更新pingを送る事って可能?
    出来るなら練習でちょっと挑戦してみようかと。

    443 = :

    しつこくメモリーリークするする言う人は何がしたいんだろ
    ページ遷移のないウェブアプリを作るときに気にしろってならわかるけど、ちょっとしたツールとかで気にすることじゃないでしょ
    昔のIEやWebKitにバグがあったとしても、実際、今はそんな簡単にメモリリークするブラウザはない
    起きないバグに怯えてコストをかけるのは無駄だし、効果が不明瞭だからキリがない
    初心者に対する嫌がらせにしか思えない

    444 = :

    最近自分が知って、ショックから立ち直ってないんじゃねーの?

    445 = :

    >>442
    実現性の前にそれは意味あるの?
    訪問者が閲覧する度に更新してないかもしれないpingを飛ばす意味がわからない

    447 = :

    >>446
    よくわからないが、それはJavaScriptなのかね?

    for (var artLayers = activeDocument.artLayers, i = 0, length = artLayers.length; i < length; ++i) {
     artLayers.name = 'PSDレイヤー_' + i;
    }

    おそらくこんな形になると思われるが…。仕様がわからないのであたってないかもしれない。

    448 = :

    >>447
     artLayers[i].name = 'PSDレイヤー_' + i;
    やろ

    449 = :

    >>448
    そうだった。ありがとう。

    450 = :

    俺の頭皮にもレイヤーが欲しいわ


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

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


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