元スレ+ JavaScript の質問用スレッド vol.93 +
JavaScript覧 / PC版 /みんなの評価 :
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 = :
俺の頭皮にもレイヤーが欲しいわ
類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.93 + (1001) - [100%] - 2012/1/1 4:46
- + JavaScript の質問用スレッド vol.97 + (1001) - [97%] - 2012/3/1 3:31
- + JavaScript の質問用スレッド vol.96 + (1001) - [97%] - 2012/1/28 23:01
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/10/26 4:18
- + JavaScript の質問用スレッド vol.90 + (1001) - [97%] - 2011/11/15 20:32
- + JavaScript の質問用スレッド vol.99 + (1001) - [97%] - 2012/5/7 4:32
- + JavaScript の質問用スレッド vol.98 + (1001) - [97%] - 2012/4/9 14:46
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.95 + (1001) - [97%] - 2012/1/17 4:16
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/1/25 12:46
- + JavaScript の質問用スレッド vol.131 + (1000) - [95%] - 2017/1/25 8:01
- + JavaScript の質問用スレッド vol.130 + (1001) - [95%] - 2017/11/25 20:45
- + JavaScript の質問用スレッド vol.131 + (1004) - [95%] - 2018/3/7 13:30
- + JavaScript の質問用スレッド vol.132 + (1001) - [95%] - 2018/4/19 11:00
- + JavaScript の質問用スレッド vol.113 + (1001) - [95%] - 2014/3/15 21:30
- + JavaScript の質問用スレッド vol.133 + (1001) - [95%] - 2018/6/8 10:45
トップメニューへ / →のくす牧場書庫について