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

私的良スレ書庫

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

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

JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
401 : Name_Not - 2011/11/25(金) 05:08:42.13 ID:??? (+3,-30,-210)
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 : Name_Not - 2011/11/25(金) 05:13:48.15 ID:??? (+94,+29,-22)
そのリークとやらをどう確認したのか言え
あと思いっきり循環参照なんだから切っとけ
403 : Name_Not - 2011/11/25(金) 05:38:00.00 ID:??? (+75,+29,-78)
>>402
すいません勘違いだったようです しばらく待っていたら解放されてました
手順は、新しいタブで開く→上記スクリプトで大きい画像を数枚開く→違うページを開く→タブを消す
の一連の動作をタスクマネージャーで監視しました

循環参照を切るとは、この場合は具体的にどうするのですか?
404 : Name_Not - 2011/11/25(金) 06:04:16.62 ID:??? (+7,-30,+0)
調べてきました この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 : Name_Not - 2011/11/25(金) 07:05:19.41 ID:??? (+5,-29,-15)
>>404
createObjectURLを使うことをおすすめする
406 : Name_Not - 2011/11/25(金) 11:50:00.46 ID:??? (+3,-29,-48)
>>405
createObjectURLはキャッシュを0MBにして何度か使っていたら読み取れなくなりました
もしかしたらこれはキャッシュ的に使うもので自動的にデータが破棄されるのではないでしょうか?
407 : Name_Not - 2011/11/25(金) 15:46:49.59 ID:??? (-1,-29,-39)
windowsのhtaでローカルファイルを読み込む処理があるのですが、読み込み中はUIがロックされてしまいます。
ロックしないよう裏で読み込む方法はないでしょうか?
408 : Name_Not - 2011/11/25(金) 15:52:20.61 ID:??? (-1,-30,-224)
【環境】OS:WinXP,Win7  ブラウザ:主にFirefox3.6.2,GoogleChrome15.0,IE6.0

外部テキストの読み込みで質問です。 
※対象は1kBほどの簡単なもの

ググって方法を調べたところ、有るには有ったのですが主にIE用にActiveXObjectを
使うサンプルコードばかりで汎用的な例が見つかりませんでした。

流れとしては テキスト(例:abc.txt) → 読み込み → 変数(例:var tData)に格納
という感じで現時点では変数に格納出来れば十分です。

文字コードはUnicode(UTF-8)かShift-JISがありますが、今のところUnicode(UTF-8)を
想定しています。

どなたかアドバイス願います。

【サンプルコード】CSVだと ttp://blog.cles.jp/item/2691

410 : Name_Not - 2011/11/25(金) 16:31:36.47 ID:??? (+3,-29,-1)
Firefox3.6.2はやめろ
411 : Name_Not - 2011/11/25(金) 17:12:25.90 ID:??? (-1,-29,-12)
MacOS 10.4はFirefox4に見捨てられたからな
当分3.6を使い続けるから、覚悟しやがれ
412 : 410 - 2011/11/25(金) 17:57:07.85 ID:??? (-1,-24,+0)
3.6ならいいけど
413 : Name_Not - 2011/11/25(金) 18:00:48.58 ID:??? (+3,-30,-122)
ちょっとばかし質問です

ボタンを押すと赤く、もう一度押すと黄色くなるボタンを作りました
オンクリックで動作するのですが
var x=0;
function hoge(){
if(x%2==1){
document.getElementById("fuge").style.backgroundColor="red";
else{
document.getElementById("fuge").style.backgroundColor="yellow";
}
x++;
}

とやっているのですが、オン、オフでもっといいやり方があるのでは?となんとなく思うのですが
もっといいやり方とかあるんでしょうか?
414 : Name_Not - 2011/11/25(金) 18:03:29.43 ID:??? (+30,-29,+0)
Element.classList.toggle
415 : 408 - 2011/11/25(金) 22:07:58.21 ID:??? (+20,-30,-89)
>>409
ありがとうございます。ttp://allabout.co.jp/gm/gc/24097/#2 を参考にして。
UTF-8とShift-JISを併用し日本語読み込みも出来ました。

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

416 : Name_Not - 2011/11/25(金) 22:30:05.08 ID:8I8Gj37i (+34,+29,-49)
>>415
クロームでそのページ見てみたけど、普通に動いとるよ?

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

それでもわからんかったら>>1にあるコード投稿サイトにコード書いてみて
417 : Name_Not - 2011/11/25(金) 22:51:10.26 ID:??? (+86,+29,-4)
あ、やっとつながった
落ちてたよね
418 : Name_Not - 2011/11/25(金) 22:51:39.81 ID:8I8Gj37i (+18,+9,-20)
あ、クロームはインスペクタって言わないんだな
メニューの表示→開発/管理→JavaScriptコンソール、で

で、よく見てみたらちゃんとは動いとらんかったごめんなさい
リクエストが"http://allabout.co.jp/gm/gc/24097/test.txt/"ってなってて404返ってきてる
419 : Name_Not - 2011/11/25(金) 23:11:44.19 ID:??? (+58,+26,-16)
>>414
ありがとうございます、toggleにこんな使い方があったんですね
返事送れてすみません
420 : Name_Not - 2011/11/25(金) 23:21:34.61 ID:??? (+101,+29,-3)
>>417
落ちてたというか、今 2ch が…
421 : Name_Not - 2011/11/25(金) 23:22:46.97 ID:??? (+67,+26,-15)
>>420
FOX強制捜査されてんのか
ざまぁwww
422 : Name_Not - 2011/11/25(金) 23:57:23.51 ID:??? (+13,-30,-269)
下のコードで(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 : Name_Not - 2011/11/26(土) 00:00:49.50 ID:??? (+53,+29,-3)
値も見せろよ
424 : Name_Not - 2011/11/26(土) 00:02:19.82 ID:??? (+4,-30,-19)
配列の質問
a=new Array(10,4);はa=[10,4];と同じように動きますが、
何か違うのですか?どっちが推奨されてますか?
425 : 422 - 2011/11/26(土) 00:17:01.57 ID:??? (+16,-30,-77)
>>423
keyは、321から338までの数値データ。
pool配列はそれぞれ0~40000ぐらいの数値をテキストデータでもってる。
setは var set=0 で初期化。
cntは 1000ぐらいの数値をテキストデータでもってる。

という感じ。
426 : Name_Not - 2011/11/26(土) 00:25:57.40 ID:vQA0r8E6 (+4,+8,-43)
>>424
newは使うな派閥というのがあってだな
427 : Name_Not - 2011/11/26(土) 00:29:07.44 ID:??? (+35,-30,-91)
>>425
再現できない

var cnt = 1000, pool = [], key = 321;
pool[321] = '100';
console.log(parseFloat(cnt) > parseFloat(pool[key])); // true
428 : 408&415 - 2011/11/26(土) 00:52:26.67 ID:??? (+5,-30,-245)
>>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 : Name_Not - 2011/11/26(土) 01:02:57.58 ID:??? (+55,+22,-23)
>>427
だよね。再現可能な最小限コードってのが難しい。
まあ、(2)にするとまともに動くのであきらめるわ。
430 : 408&415 - 2011/11/26(土) 01:11:58.36 ID:??? (+7,-29,-93)
(自己解決しました)
「--allow-file-access-from-files」は必要だったのですが、対象のHTMLを
右クリックで「プログラムから開く」でやると駄目で、予めChromeウインドウを開いて
おいてそこに対象HTMLをドラッグ&ドロップすればOKでした。

ちょっとメンドクサイ
431 : Name_Not - 2011/11/26(土) 01:29:02.00 ID:??? (-1,-29,-32)
>>430
file:/// でテストしているならかなりの確率で実装依存だからローカルにサーバ立てた方がいいと思うよ
432 : Name_Not - 2011/11/26(土) 03:07:46.39 ID:??? (+3,-29,-98)
JavaScript The Good Partsに名前(アルファベット1文字以上と
_と数字)は演算子として利用可能と載ってたのですが、
演算子は+,=,?:などと認識してます。ここでの「演算子として利用
可能」とはどいった意味なのでしょう?
433 : Name_Not - 2011/11/26(土) 03:21:55.02 ID:??? (+64,+29,-9)
どこの章のどこの項のどこの行よ
何を語ってるページなのよ
434 : Name_Not - 2011/11/26(土) 03:35:03.26 ID:??? (+41,-30,-186)
>>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 : Name_Not - 2011/11/26(土) 03:36:14.26 ID:??? (+3,-30,-280)
//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 : Name_Not - 2011/11/26(土) 03:40:22.89 ID:??? (+52,-29,-65)
>>433
JavaScript The Good Partsの第2章文法の2.2 名前(P9)のとこです。
そこに、「名前は、命令文、変数、引数、プロパティ名、演算子、ラベル
として利用することができる」とあります。
437 : Name_Not - 2011/11/26(土) 03:57:13.18 ID:??? (-2,-30,-19)
これやこれ トントン

delete
typeof
void
instanceof
new
 in

438 : Name_Not - 2011/11/26(土) 04:09:48.38 ID:??? (+57,+29,-64)
new演算子の予約後newは「名前」と解釈するのですか?
名前には予約後が利用できないと書いてありますが、
予約後を名前に含めるということですか。
439 : Name_Not - 2011/11/26(土) 04:26:05.41 ID:??? (+52,+29,-3)
キミ前にどっかで見た気がするな
440 : Name_Not - 2011/11/26(土) 04:30:59.76 ID:??? (+64,+29,-24)
>>436
どう考えても識別子の誤植

>>434
HTMLぐらいマトモに書け、後で苦労すっぞ
それだとメモリーリークすっからな
441 : Name_Not - 2011/11/26(土) 09:47:39.47 ID:??? (+9,-30,-223)
>>436

日> ただし以下の予約語は、いずれも名前として利用することはできない。
英> A name cannot be one of these reserved words:
http://www.google.co.jp/search?tbm=bks&q=good+parts+names+%22A+name+cannot+be+one+of+these+reserved+words%22
(共通 予約語リスト 現行+将来採用され得る 命令文・演算子・修飾子など)

ここはプログラマが何かを命名するときに使えるかどうかの話。
Crockfordの書き方が曖昧かな。


日> 名前は、命令文、変数、引数、プロパティ名、演算子、ラベルとして利用することができる。
英> Names are used for statements, variables, parameters, property names, operators, and labels.
http://www.google.co.jp/search?tbm=bks&q=good+parts+names+%22Names+are+used+for+statements%2C+variables%2C+parameters%2C+property+names%2C+operators%2C+and+labels%22

ここは単純に構文の説明。プログラマができるかどうかの話じゃない。
素直に「として使われる」と訳したほうがよかったんじゃないかと思う。
442 : Name_Not - 2011/11/26(土) 11:45:27.96 ID:??? (+91,+29,-8)
JavaScriptだけで更新pingを送る事って可能?
出来るなら練習でちょっと挑戦してみようかと。
443 : Name_Not - 2011/11/26(土) 13:25:51.57 ID:??? (+130,+29,-80)
しつこくメモリーリークするする言う人は何がしたいんだろ
ページ遷移のないウェブアプリを作るときに気にしろってならわかるけど、ちょっとしたツールとかで気にすることじゃないでしょ
昔のIEやWebKitにバグがあったとしても、実際、今はそんな簡単にメモリリークするブラウザはない
起きないバグに怯えてコストをかけるのは無駄だし、効果が不明瞭だからキリがない
初心者に対する嫌がらせにしか思えない
444 : Name_Not - 2011/11/26(土) 13:57:36.96 ID:??? (+57,+29,-11)
最近自分が知って、ショックから立ち直ってないんじゃねーの?
445 : Name_Not - 2011/11/26(土) 14:20:48.27 ID:??? (+104,+29,-38)
>>442
実現性の前にそれは意味あるの?
訪問者が閲覧する度に更新してないかもしれないpingを飛ばす意味がわからない
446 : Name_Not - 2011/11/26(土) 14:34:46.59 ID:OgUuUs0s (-18,-30,-161)
超超初心者です。質問させてください。

フォトショップで、「レイヤー名を変更するスクリプト」というのをネットで
見つけて、使ってみました。以下の文でした。

activeDocument.artLayers[0].name = "PSDレイヤー_0";

これで、一番上にあるレイヤー1つが「PSDレイヤー_0」という名前に変わりました。

このスクリプトの[☆] ☆の部分の数字を《最初から最後まで》に、
更に可能なら、"PSDレイヤー_★"; ★の部分の数字を連番に、

このように変えることができないでしょうか?

たくさんコピぺして文を増やして、数字を[1][2]と変えて試してみたのですが、、、

activeDocument.artLayers[0].name = "PSDレイヤー_0";
activeDocument.artLayers[1].name = "PSDレイヤー_1";
activeDocument.artLayers[2].name = "PSDレイヤー_2";
activeDocument.artLayers[3].name = "PSDレイヤー_3";

動作はちゃんとするのですが、レイヤー数が各ファイルによって違っているため、
レイヤー数が2コしか無い場合はエラーになってしまうし、
5コある場合は3までしか変更できないし・・と上手くいかないのでした。

どうか教えていただけないでしょうか。よろしくお願いいたします。
447 : Name_Not - 2011/11/26(土) 14:39:09.43 ID:??? (+7,-30,-94)
>>446
よくわからないが、それはJavaScriptなのかね?

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

おそらくこんな形になると思われるが…。仕様がわからないのであたってないかもしれない。
448 : Name_Not - 2011/11/26(土) 14:54:12.83 ID:??? (+41,-29,-2)
>>447
 artLayers[i].name = 'PSDレイヤー_' + i;
やろ
449 : 447 - 2011/11/26(土) 14:56:48.87 ID:??? (+61,+29,+1)
>>448
そうだった。ありがとう。
450 : 448 - 2011/11/26(土) 14:59:03.28 ID:??? (+86,+29,-5)
俺の頭皮にもレイヤーが欲しいわ
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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