私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ+ JavaScript の質問用スレッド vol.84 +
JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
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>
<?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>
>>152
Function.prototype.call を使えば出来る。
Function.prototype.call を使えば出来る。
すみません。コメントを外すとokで、コメントのままだとngです。
firefox3.6.13で、Webサーバはtomcat6.0.32です。
firefox3.6.13で、Webサーバはtomcat6.0.32です。
>>154
sleep(1); を呼び出した(コメントを外した)場合。
http://jsbin.com/olope4/2
期待通りに動かない。セレクトボックスが選択できてしまう。
Firebug でも select が増殖しているようには見えなかった。代わりに "sleep is not defined" が増殖する。
sleep(1); を呼び出した(コメントを外した)場合。
http://jsbin.com/olope4/2
期待通りに動かない。セレクトボックスが選択できてしまう。
Firebug でも select が増殖しているようには見えなかった。代わりに "sleep is not defined" が増殖する。
>>153
ありがとうございます。上手くいきました
var foobar = document.getElementById('foobar');
foobar.attachEvent('onclick', function(){(function(){
this.firstChild.data = 'IE';
}).call(event.srcElement)});
ありがとうございます。上手くいきました
var foobar = document.getElementById('foobar');
foobar.attachEvent('onclick', function(){(function(){
this.firstChild.data = 'IE';
}).call(event.srcElement)});
>>156
素朴な疑問なんだが、
document.getElementById('foobar').attachEvent('onclick', function (event) {
var element = event.srcElement;
element.firstChild.data = 'IE';
});
これでダメな理由は何なんだろう?
素朴な疑問なんだが、
document.getElementById('foobar').attachEvent('onclick', function (event) {
var element = event.srcElement;
element.firstChild.data = 'IE';
});
これでダメな理由は何なんだろう?
function () { this.firstChild.data = 'IE'; } を既に定義していて、addEventListener と attachEvent の両方で使いたかったに一票。
this と event.srcElement は対応しないはずだけどね。
this と event.srcElement は対応しないはずだけどね。
>>159
そのコードを書いた気持ちはわかるんだが、addEventListener と互換性が取れてないのが気になる。
・>157 にもあるが attachEvent は第一引数で event を取れるから、window.event を使わなくていい
・this は event.currentTarget と等価 (event.target じゃない)
・this も書き換えるなら event も書き換えた方が後々楽になると思う。 event.target と event.currentTarget を定義するだけでも大分違う。
・attachEvent は onload 時に event.srcElement が null なので、対処を
そのコードを書いた気持ちはわかるんだが、addEventListener と互換性が取れてないのが気になる。
・>157 にもあるが attachEvent は第一引数で event を取れるから、window.event を使わなくていい
・this は event.currentTarget と等価 (event.target じゃない)
・this も書き換えるなら event も書き換えた方が後々楽になると思う。 event.target と event.currentTarget を定義するだけでも大分違う。
・attachEvent は onload 時に event.srcElement が null なので、対処を
重要なことを書き忘れていた。
何よりも、>159 が拙いのは detachEvent 出来なくなること。
Element.prototype.addEventListener の引数 listener は書き換えられているので、元々の listener では detachEvent することが出来ない。
この問題に対応するためには元々の [this, type, listener, useCapture] をキャッシュしておき、removeEventListener 時に照合するしかない。
何よりも、>159 が拙いのは detachEvent 出来なくなること。
Element.prototype.addEventListener の引数 listener は書き換えられているので、元々の listener では detachEvent することが出来ない。
この問題に対応するためには元々の [this, type, listener, useCapture] をキャッシュしておき、removeEventListener 時に照合するしかない。
>>137
ラージって言わないんだ
デカルチャーだわ
アッパーケースって言うのが普通なのか…恥ずかしい
例えば新人が定数変数をロウで書いてたら、アッパーケースで書き直して。って言い方で指示するの?
labelは何て呼んでる?
レーベルだよねw流石にラベル何ていわねーわなw
ラージって言わないんだ
デカルチャーだわ
アッパーケースって言うのが普通なのか…恥ずかしい
例えば新人が定数変数をロウで書いてたら、アッパーケースで書き直して。って言い方で指示するの?
labelは何て呼んでる?
レーベルだよねw流石にラベル何ていわねーわなw
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));
}
});
こんな感じになります
どこを手直せばいいのかそもそも不可能なのかご存知の方アドバイスお願いします
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));
}
});
こんな感じになります
どこを手直せばいいのかそもそも不可能なのかご存知の方アドバイスお願いします
日本語を使えよ。大文字でいいじゃん。ラベルも日本語といや日本語。
レーベルというのはレコードやCDの1つのブランドを表す日本語。
カルテもカルタもカードもトランプも日本語。
レーベルというのはレコードやCDの1つのブランドを表す日本語。
カルテもカルタもカードもトランプも日本語。
document.querySelectorAll("#tar").length
で確かめたらずっと1だったから問題ないと思うよ。
Firebugsがおかしいって可能性は?
で確かめたらずっと1だったから問題ないと思うよ。
Firebugsがおかしいって可能性は?
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)));
}
});
こちらを参考に自己解決しました
一応コード出しておきます
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)));
}
});
>>175
String.fromCharCode(0x52); // R
String.fromCharCode(0x52); // R
ドラッグ&ドロップでファイルをアップロードさせるコードを書いています。
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で読み込んでいます。続きます。
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で読み込んでいます。続きます。
続きです
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です 以上です。よろしくお願いします
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です 以上です。よろしくお願いします
jsでファイルをアップロードする一番簡単なのはFormData使う方法だけどHTML5だからFirefox4、Chromeぐらいしか対応してないんだよね
http://ideone.com/FwufK
FormData使わずにやるならbase64でエンコードしてから送ったほうがいい、
getAsDataURLでbase64の値が取れるからサーバーサイドで戻すのが確実
http://ideone.com/FwufK
FormData使わずにやるならbase64でエンコードしてから送ったほうがいい、
getAsDataURLでbase64の値が取れるからサーバーサイドで戻すのが確実
今気づいたけど
> Q9. Aタグのonclickで動作指定してるのですが時々動きません…
> A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
preventDefaultでもできるよねというかこっちが正統派なきがするけど。
http://developer.mozilla.org/ja/DOM/event.preventDefault
> Q9. Aタグのonclickで動作指定してるのですが時々動きません…
> A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
preventDefaultでもできるよねというかこっちが正統派なきがするけど。
http://developer.mozilla.org/ja/DOM/event.preventDefault
>>179
どうも。FormDataは知らなかった。
どうも。FormDataは知らなかった。
>>180
IE
IE
>>176
できた!全角の問題が厳しかったが自力でできたよ、ありがとう
できた!全角の問題が厳しかったが自力でできたよ、ありがとう
>>180
次スレテンプレ案では削除予定だけどhttp://fiddle.jshell.net/vSqKr/13/show/#Q9 には書いてあるね。
preventDefault は IE9 からだっけ。
次スレテンプレ案では削除予定だけどhttp://fiddle.jshell.net/vSqKr/13/show/#Q9 には書いてあるね。
preventDefault は IE9 からだっけ。
>>181
XMLHttpRequest.sendAsBinaryで出来るかもしれない。
XMLHttpRequest.sendAsBinaryで出来るかもしれない。
Q5 にIEのバージョンを書いておいた。他サンプルコードの修正。
http://fiddle.jshell.net/vSqKr/14/show/
http://fiddle.jshell.net/vSqKr/14/show/
>>187
いいね。
目次で見ると Q14 が結構長いな。他に合わせて
Q14. setTimeout() やイベントハンドラ関数に設定するコードに this を含めたいのですが…
でいい気がするんだけど、どうだろう?
いいね。
目次で見ると Q14 が結構長いな。他に合わせて
Q14. setTimeout() やイベントハンドラ関数に設定するコードに this を含めたいのですが…
でいい気がするんだけど、どうだろう?
やってみた。(16 で誰かやってたっぽいw)
http://fiddle.jshell.net/vSqKr/17/show/
http://fiddle.jshell.net/vSqKr/17/show/
更新する度にコンテンツと目次の同期を取るのは面倒かもしれないので、目次を JavaScript で生成するようにしてみた。
http://fiddle.jshell.net/vSqKr/19/show/
http://fiddle.jshell.net/vSqKr/19/show/
質問です。
サイトにTwitterのコメントボックスを設置しようとしています。
ボックスにデフォルトで表示される文面(defaultcontent)は、以下のように
「location.href」としてページごとのアドレスが来るように指定しています。
twttr.anywhere(function(twitter) {twitter("#tweetBox").tweetBox({
defaultContent: " " + location.href});
このアドレスを「bit.ly API」を用いた短縮アドレスに置き換えたいと考えています。
以下のサイト様を参考にしていますが、リンクボタンとして説明されている方法を
テキストボックスに応用するにはどのような手順が必要でしょうか?
http://ringoon.jp/2009/10/16/bitly-api-javascript-twitter.html
サイトにTwitterのコメントボックスを設置しようとしています。
ボックスにデフォルトで表示される文面(defaultcontent)は、以下のように
「location.href」としてページごとのアドレスが来るように指定しています。
twttr.anywhere(function(twitter) {twitter("#tweetBox").tweetBox({
defaultContent: " " + location.href});
このアドレスを「bit.ly API」を用いた短縮アドレスに置き換えたいと考えています。
以下のサイト様を参考にしていますが、リンクボタンとして説明されている方法を
テキストボックスに応用するにはどのような手順が必要でしょうか?
http://ringoon.jp/2009/10/16/bitly-api-javascript-twitter.html
Faceboxライブラリで手前にHTMLを表示したいのですが、画像は普通に表示できるのに、htmlファイルは指定してもうまく表示出来ません
やり方もしくは参考になるサイトをご存知でしたらご教授ください
やり方もしくは参考になるサイトをご存知でしたらご教授ください
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- + JavaScript の質問用スレッド vol.94 + (1001) - [97%] - 2012/1/8 15:46
- + JavaScript の質問用スレッド vol.89 + (1001) - [97%] - 2011/9/4 4:17
- + JavaScript の質問用スレッド vol.88 + (1001) - [97%] - 2011/7/20 7:03
- + JavaScript の質問用スレッド vol.74 + (1001) - [97%] - 2009/12/1 6:08 ○
- + JavaScript の質問用スレッド vol.87 + (1001) - [97%] - 2011/6/21 6:33
- + JavaScript の質問用スレッド vol.86 + (1001) - [97%] - 2011/5/27 21:50
- + JavaScript の質問用スレッド vol.85 + (1001) - [97%] - 2011/4/25 21:32
- + JavaScript の質問用スレッド vol.83 + (1001) - [97%] - 2011/2/24 8:02
- + JavaScript の質問用スレッド vol.82 + (1001) - [97%] - 2011/1/19 7:54
- + JavaScript の質問用スレッド vol.81 + (1001) - [97%] - 2010/12/10 20:01
- + JavaScript の質問用スレッド vol.80 + (1001) - [97%] - 2010/11/9 2:17
- + JavaScript の質問用スレッド vol.141 + (881) - [95%] - 2021/4/19 9:00
- + JavaScript の質問用スレッド vol.134 + (1001) - [95%] - 2018/8/3 23:15
- + JavaScript の質問用スレッド vol.104 + (1001) - [95%] - 2013/1/28 4:00
- + JavaScript の質問用スレッド vol.124 + (1001) - [95%] - 2015/7/16 1:30
- + JavaScript の質問用スレッド vol.142 + (984) - [95%] - 2020/8/27 19:15
- + JavaScript の質問用スレッド vol.114 + (1001) - [95%] - 2014/5/3 10:45
トップメニューへ / →のくす牧場書庫について