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

このエントリーをはてなブックマークに追加
1Name_Not_Found
━━━━━JavaScript質問スレ道場訓━━━━━
 一、礼節を重んじ常に努力精進すること
 一、ブラクラに打ち勝つ精神力を持つこと
 一、心身の優れたJavaScriptを学ぶこと
 一、雑草の如く生涯JavaScriptを貫くこと
 一、感謝と反省を忘れないこと
 以上
━━━━━━━━━━━━━━━━━━━━━━
このスレに書き込むことが許されるものは以下のとおり
・テンプレ/FAQ/過去ログ/関連資料を読める者。とくに>>2-10は必須!!!
 (とくにローカルファイルや他鯖のページ内容は絶対取れない:Q1とQ2)
・JavaScriptとJavaの違いを理解する者
・スクリプトを組むための最低限のHTML・CSSを理解する者
・ユーザーに迷惑となるスクリプトを書かない者
・「初心者です」を振りかざさず、質問を分かる日本語で説明できる者
・対象環境や使用技術は質問者の裁量であることを理解する者
 (質問/回答時はなるべく環境明記。WinIE5.5/N6未満と希少ブラウザは必須!)
前スレ http://pc11.2ch.net/test/read.cgi/hp/1204201797/l50
[必読]過去スレ全集 http://wing2.jp/~mirrorhenkan/2ch/javascript/
  (ずべて同一)  http://www2.atpages.jp/mirror/2ch/javascript/
          http://usamimi.info/~mirrorhenkan/2ch/javascript/
[必読]ガイド http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide
(GuideをReferenceに→Netscape版言語仕様。多くの実装が準拠:ECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ>>1-10
【質問を書く上で】
1)ユーザ(閲覧者)に迷惑がかかる性悪スクリプトは回答されない。
 例: 別窓開きまくり、閉じる/戻るのを妨害、全画面占有、etcは最悪。
 答えさせようと「分からねえんだろ」と煽っても無駄(過去スレが証明)。
2)言葉でぐだぐだ書かずにソースを貼る、ただし要点を整理して。
 そのまま貼って動かせると試してもらいやすい(ただし回答者に連結さすな!)
 長い(1レスに入らない)場合はアップロードしてURIを貼る。
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
5)特に古いバージョン限定の時は必ず明記! 回答もチグハグになり回答者に2度
 手間を食わせる可能性大(現行Ver.:IE5.5-6、N6-7、Opera7-8)
6)どういう時にどういう動作をさせたいのかを脳内にとどめずきちんと書く。
 例:「自動ポップアップしたい」←どういう場合(マウスオーバー、クリック、
 ボタン押し、select選択)に何(別窓、レイヤー、その他)が出るのか書け!
7)質問はまっとうな(他人に理解できる)日本語で。
 前項の例に限らず、他人に理解できない質問文は煽られるだけで時間の無駄
【FAQその1】
Q1. 開いた別窓/フレームの内容にアクセスできないのですが…
A1. ページ内容が別サーバの場合セキュリティ制約により絶対無理です。
Q2. JavaScriptでローカルファイルを読み/書きたいのですが…
A2. Webではセキュリティ制約により絶対無理です。できたら恐ろしいことに…
Q3. 同じタグの中でonclick="foo()"とonclick="bar()"を同時に使いたいのですが…
A3. セミコロンで複数の文を区切れます。onclick="foo();bar();"としましょう。
Q4. document.write(...)でページ内容を追加したいのですが…
A4. 一度ページ表示完了後にwrite()すると内容はクリアされちゃいます。
 部分的に内容変更するには(1)他フレーム/iframe/別窓への表示、
 (2)textarea等への表示、(3)DOMでノード挿入、(4)innerHTMLのどれかで。
 innerHTMLは非標準ですがIE、Opera、Safari、Gecko(N6/N7/Firefox等)で対応済。
Q5. table/tbody/tr要素のinnerHTMLを書き換えるのがうまく行かないのですが…
A5. IEはそれらの要素のinnerHTMLは変更不能。DOMを使って書き換えるか
 <div><table>...</table></div>とでもしてdivのinnerHTMLを書き換えましょう。
Q6. DOMでtable要素にtr要素を追加しても表示されないのですが…
A6. DOMでは(XHTML 1.x除く)tbody要素にtr要素を追加する必要があります。
 tbody要素はtbodyタグを書いていなくても自動的に作成されます。
 またはtable.insertRow()/tbody.insertRow()を使いましょう。
Q7. 変数w1、w2…を順にループで(番号をiに入れて)設定/参照したいのですが…
A7. グローバル変数はwindowのプロパティだからwindow['w'+i]を読み書きすれ。
Q8. フォーム部品名を変数にした「...myform.変数名.value」が動きません…
A8. 「document.forms.myform.elements[変数名].value」でどぞ。
 JavaScriptでは一般に「obj.x」と「obj['x']」は同じ意味です。
【FAQその2】
Q9. Aタグのonclickで動作指定してるのですが時々動きません…
A9. 「onclick="...;return false"」としないとページ移動しちゃうから。
Q10. CSSで設定した背景色がe.style.backgroundColorで取得できないのですが…
A10. 取得には document.defaultView.getComputedStyle() を使う必要あり。
Q11. 100*1.15の結果が114.999…998となってしまうのですが…
A11. コンピュータの実数計算は全て近似値だと思え。誤差が嫌なら整数で計算。
Q12. 任意のデータをサーバ(別鯖ではない)から取り寄せたいのですが…
A12. IE7/Gecko/Opera/Safariのnew XMLHttpRequest()、IEの
 new ActiveXObject("Msxml2.XMLHTTP.6.0") (または"Msxml2.XMLHTTP.3.0")
 を使えばできます。古いブラウザだと隠しフレームに読むなどのワザが必要。
Q13. setAttribute("class","foo")、setAttribute("onclick","bar()")が動きません…
A13. IEではそれは不可。「obj.className="foo"」「obj.onclick=bar」でどぞ。
 複数の関数を呼びたいときは obj.onclick=function(){foo();bar();};
 という風に無名関数を作りましょう。中に書かれたコードが実行されます。
Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
 「"...this..."」とか「function(){...this...}」ではうまく行きません。
A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。
 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に
 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中)
Q15. 文字列の置き換えをするときにコードを使いたい(Perlのs///e)のですが…
A15. string.replace(/.../,function(str,p1,p2,...,offset,s){...})としましょう。
 正規表現にマッチした文字列がreturnで返された文字列に置き換えられます。
 各引数はstrがマッチした部分文字列、p1,p2,...が1番目、2番目、…の()の中身、
 offsetがマッチした位置、sが置き換え前の文字列全体になります。
【主張の対立:他人の嗜好は尊重。損得の議論は歓迎】
・仕様を読む:回答者なら仕様の該当部分は読んでいるべき。質問者でも
 仕様を読まずうだうだ書く奴は注意されて当然。読み間違いは生温く指摘。
・英文文書:翻訳の努力を惜しむべからず。 読めないなら和訳を探し、
 なければあきらめよう。翻訳サイトを知っている人はうまく誘導してあげて。
・IE専用/アンチIE/クロスブラウザ:「○○は不要」「○○だけであと
 は無視」は不毛。質問者が分かって選択していれば尊重する。無知か
 らIE専なのは指摘してあげると親切。
・標準準拠 vs 使えればよい:標準はブラウザが変わっても維持される
 可能性大。非標準機能も損得を分かった上で使うならよい。
・MS vs アンチMS:MS固有の情報はMSのサイトで見ないと分からないが、
 そこだけ見ているとIE専になる。あとは上2件と同様。
・別窓、イベント抑止など:一般には迷惑スクリプトだが質問者に正当
 な理由があることも。尋ねて分かってないようなら煽っても可(w
・innerHTML vs DOM:それぞれに長所/弱点があるので理解した上で選
 択するべき。一概にどちらは駄目、とは言えない。
・on属性 vs addXXX():ハンドラが1つだけと分かっていればon属性
 で簡単にハンドラを設定もあり。上書きが心配ならaddXXX()。
【チュートリアルサイト・サンプルサイト】
規格が読めないならまずはチュートリアル。サンプルサイトも沢山ある。
(とほほは間違いが多いためこのスレでは批判的意見が多い)
(以下は精選すべきとの議論あるが進んでいないので玉石混淆)
MetaGraphic Cell
http://www2u.biglobe.ne.jp/~oz-07ams/prog/
どら猫本舗のリファレンスカウンター
http://www.doraneko.org/
はぎさんちのページ Mozilla's DOM Sample Project
http://cgi.din.or.jp/~hagi3/JavaScript/JSTips/Mozilla/mds.cgi
オブジェクトなJSの基礎講座
http://chaichan.web.infoseek.co.jp/src/2ndthema.htm
【検索】
キーワード『…』で検索しろ」「ぐぐれ」と言われた場合はこちらへ
http://www.google.co.jp/
【関連スレ】
板違い、スレ違いに注意!サーバ側での処理はWebProg板へどぞ!
Webサイト制作初心者用質問スレ Part 194
http://pc11.2ch.net/test/read.cgi/hp/1204015309/l50
CSS /* CSS・スタイルシート質問スレ 上級者用【70th】 */
http://pc11.2ch.net/test/read.cgi/hp/1199354032/l50
CSS/DHTMLバグ辞典スレッド 【第5版】
http://pc8.2ch.net/test/read.cgi/hp/1144494359/l50
役に立つ書籍は? 4冊目
http://pc11.2ch.net/test/read.cgi/hp/1172823674/l50
8Name_Not_Found:2008/04/14(月) 11:49:51 ID:???
>>1-7 乙カレー様でした。FAQの追加が入り損なったけど
私ことスレ立て人に立てられなかったのでしょうがないよね。
とりあえず、前スレで出たFAQの追加提案を挙げておきます。
Q16. input type="file"の値を設定(参照)できないのですが…
A16. セキュリティ制約のため設定は絶対に不可。参照はブラウザにより不可。
あとこれは提案だけあったのだけどよく出るのは確かだから。
Q17. getElementById('ID名')や$('ID名')で要素が取れないのですが…
A17. コード実行時点でHTMLがそこまで読まれてない。onload中でやるとか。
9Name_Not_Found:2008/04/14(月) 11:53:33 ID:???
そして最大の課題は >>1 をどう改訂するか。道場訓をやめる?
やめたとして、何をどう書く? >>1 の代替案一式、求む…
10Name_Not_Found:2008/04/14(月) 11:55:49 ID:???
あと、関連スレ>>7に次のものを入れた方が親切かと思いました。
○手取り足取りスレ
○WSHスレ
○bookmarklet (1行javascript)スレ
一方、「ぐぐれ」の解説なんか要らないよねー。参考サイトは
結局いいものがないんだよねー。
11Name_Not_Found:2008/04/14(月) 12:06:33 ID:???
>>1

>>9
シンプルに、
Webブラウザ上で動作するJavaScriptの質問スレです。

このスレは、ある程度JavaScriptでのプログラミングが出来るような、
JavaScriptコードによる回答でも理解出来る方が対象となります。

既にあるサンプルを変更するなど、ただJavaScriptを使ってみたいというだけの方や、
JavaScript初心者の方は下記スレにお願いします。
・JavaScript 手取り足取りスレッド
http://pc11.2ch.net/test/read.cgi/hp/1205922529/

前スレ
・+ JavaScript の質問用スレッド vol.63 +
http://pc11.2ch.net/test/read.cgi/hp/1204201797/
12Name_Not_Found:2008/04/14(月) 12:07:54 ID:???
ついでに、

各種JavaScriptフレームワークはテクニックの宝庫ですので、
一度目を通してみる事をお勧めします。
またこれらのサイトにあるサンプルを見れば、
JavaScriptでは何が出来るかという事の一端も判ります。

Prototype.js
ttp://prototypejs.org/

script.aculo.us
ttp://script.aculo.us/

JQuery
ttp://jquery.com/

Yahoo! UI Library (YUI)
ttp://developer.yahoo.com/yui/

Mootools
ttp://mootools.net/
13Name_Not_Found:2008/04/14(月) 12:21:44 ID:???
>>11 過去スレ全集とかそのあたりを落とすのは反対。見た目で
すぐこのスレだと分かるように「道場訓」の形は残した方がよい。

━━━本スレに書く事を許されるの者は以下の通り━━━
 一、JavaScriptはJavaとは別物であると知っている事
 −、自ら学んでJavaScriptコードを書く意思を持つ事
 −、ユーザに迷惑となるスクリプトを書かない事
 −、質問をきちんと分かる日本語で説明できる事
 −、トラブルを再現する最小限のサンプルを貼れる事
 −、テンプレ+FAQ>>2-10/過去ログ/関連資料を読める事
━━━━━━━━━━━━━━━━━━━━━━━━━━━
自力で書く気がない人は他のスレへ(テンプレ末尾参照)。
[必読]過去スレ全集 http://wing2.jp/~mirrorhenkan/2ch/javascript/
  (ずべて同一)  http://www2.atpages.jp/mirror/2ch/javascript/
          http://usamimi.info/~mirrorhenkan/2ch/javascript/
[必読]ガイド http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Guide
(GuideをReferenceに→Netscape版言語仕様。多くの実装が準拠:ECMA-262.ed3)
FAQ・注意・過去ログ・仕様書・関連資料・関連スレ>>1-10
14Name_Not_Found:2008/04/14(月) 12:27:38 ID:???
>>12
いいね。あと、常連(自称を含む)に釘を挿したいことがあれば今
提案してくれるといいと思うよ。スレの流れの中で喧嘩するより
今議論して合意しておく方が建設的でしょ。
15Name_Not_Found:2008/04/14(月) 12:50:22 ID:???
発言が気に入らないとかいってネチこくそいつのIP晒してた「常連」(?)が
いたな。スレどころか2chの存在理由に逆行してるだろ。そういうことがま
かり通るスレにはなって欲しくない。
16Name_Not_Found:2008/04/14(月) 13:10:16 ID:???
>>15
もちろんそれは当然だな。というか、常連の問題じゃなくそいつ
個人の問題でしょ。2ちゃんにキチガイはつきものだから。
で、テンプレにわざわざ書くようなもんでもないよね。普通の人は
分かっているしキチガイはテンプレに書いてあったってやめないから。
1715:2008/04/14(月) 14:18:13 ID:???
>>16
当然とは思わないな。それは一体誰の裁きなんだ?何事においても常に正
しい「常連」様が判定なさったものだから悲しくもIP晒された方はやられ
て当然という論理か。プログラミングでの発言の程度なんかタカが知れて
るだろ。深刻な問題に発展したらアク禁すりゃいいんだよ。
18Name_Not_Found:2008/04/14(月) 14:25:22 ID:???
当然ってのは最後の文にかかってるんじゃないのか
19Name_Not_Found:2008/04/14(月) 14:56:42 ID:???
15は読解力がないなぁ。
「プログラミングでの発言の程度なんか」とか言っちゃってるし。
こういう奴にテンプレ議論とか向かないよな。
20Name_Not_Found:2008/04/14(月) 15:03:38 ID:???
まあ向く向かないとか解釈とかはさておき、ズバリこういう文章を
テンプレに入れてはという具体的提案でどぞ。洩れはキチガイ対応な
記述は入れる必要なしと思っているけど、文案がよければ賛同者が増える
かも知れないよ。
21Name_Not_Found:2008/04/14(月) 15:05:23 ID:???
この雰囲気がJS終了を象徴している。クラや上司がFlexに示す反応は良好だからな。隙間でじっとしていないでASをやれ。おまえらには素養が十分すぎるほどあるのだから。
22Name_Not_Found:2008/04/14(月) 15:19:49 ID:???
>>21
今後50年間(アンタが死ぬまで)言い続けてるといいよ。せいぜいがんばって。
しかしこのスレが始まったとき、64スレも続くと思った奴はいなかったろうなあ。
23Name_Not_Found:2008/04/14(月) 15:28:13 ID:???
>>14
質問と回答、それにその質問から派生する話題や議論が行われるスレであって、
質問に対する煽りというか厨の小言は邪魔なだけなので、
煽るくらいならスルーするか適当なスレに誘導するなどをすべきだと思うね。
>>13のゴタクは質問者に関する物だけで、回答者(実際は回答していないようだけど)側の姿勢が欠落しているのが痛い。
24Name_Not_Found:2008/04/14(月) 15:33:06 ID:???
>>23
過去に何回も出た議論だが、初心者を甘やかすのは反対だし、
それにはスルーではなく何か言うというのがこのスレのスタンス
だと思うね。回答者に対するゴタクがないのは、現状のテンプレの
>>1がそうだから。で、どういうことを入れる?
洩れとしては、「質問者の態度がなってない場合煽ってもいいが、
その場合でも書き込みには必ず回答、ヒント、誘導などが含まれること」
とかがいいんじゃないかと思うが。
25Name_Not_Found:2008/04/14(月) 15:34:48 ID:???
そもそも回答者は >>1 以外のテンプレも見てるわけだから、
>>5 などにちゃんと書けばいいんでないの。
26Name_Not_Found:2008/04/14(月) 19:15:17 ID:???
ブラウザのテキストエリアにjacvascriptのソース貼ってそのまま動作確認できるページあったと思うんですけど
何処にあるか忘れてしまったので教えてください
27Name_Not_Found:2008/04/14(月) 19:20:37 ID:???
それくらい自分で書けばいいだろ
28Name_Not_Found:2008/04/14(月) 19:28:59 ID:XcAflklm
openWYSIWYGの質問です。
http://www.openwebware.com/products/openwysiwyg/

リッチテキスト内をクリックした時、アラートを出したいのですが、
うまくいきません。

wysiwyg.jsの375行目付近の
// Write the textarea's content into the iframe
doc.open();
doc.write(content);
doc.close();

辺りをいじればうまくいくのかと思いましたがうまくいきません。

doc.onclick=alert();
とかやってもダメみたいです。

iframe自体にはonclickが効かないので、iframe内のdocumentを取得して
それにonclickをセットするみたいなイメージなのですが・・・。
お時間のある方、教えてください。
29Name_Not_Found:2008/04/14(月) 19:29:18 ID:???
Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
 「"...this..."」とか「function(){...this...}」ではうまく行きません。
A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。
 「function(x){return function(){...x...};}(this)」のようにthisを別の変数に
 束縛しその変数を使って。循環参照によるメモリリーク問題あり(この項記述検討中)

今まさにこれで詰まってるんで
是非解説お願いします
引数にthis入れて解決はしてるんですが
メモリリークの問題ありっていうのが気になるんで
30Name_Not_Found:2008/04/14(月) 19:41:09 ID:???
>>29
どうも最近のIEはスワップに記憶することで一応の解決を図っているんじゃないか?
ろくに確かめもせずに言っているので自分で確かめて逆に知らせてくれ。
俺個人はその問題に該当するようなコードを一切書かないからもう興味がない。
31Name_Not_Found:2008/04/14(月) 19:45:10 ID:???
>>29
丁寧にリーク解消していくか、prototype.js のよう(ry
32Name_Not_Found:2008/04/14(月) 20:33:26 ID:cliXB7ty
★「Web世界標準」について周知徹底するスレ
http://pc11.2ch.net/test/read.cgi/hp/1208031270/
33960:2008/04/14(月) 21:58:45 ID:???
遅くなったけどスレ立て乙です。
まさか1日でPHP卒業しろと言われるとは思わなかったよ…
34Name_Not_Found:2008/04/14(月) 22:13:10 ID:???
しょぼい質問で恐縮ですが
こんな感じで表示している画像の位置を取得したいのですが
どういう風にすれば取得できるでせうか?

<DIV style=cursor:crosshair;>
<IMG src="test.jpg" id="img1" >
</div>

今現状の取得の仕方
var tmp = document.getElementById("img1");
document.getElementById("text_area09").innerHTML="pos:"+tmp.style.top+","+tmp.style.left;

imgタグに
<IMG src="test.jpg" id="img1" style="position: absolute; top:100px; left:100px;" >
と書いてあれば取得できるのですが・・

またできれば画像の幅なども取得できる方法があればご教授願います
35Name_Not_Found:2008/04/14(月) 22:17:20 ID:???
>>34
offseTop offsetLeft offsetWidth
36Name_Not_Found:2008/04/14(月) 22:29:21 ID:???
おお!
ありがとうございます!
37960:2008/04/14(月) 22:48:54 ID:???
今まで他の人に頼りすぎていたようだ・・・
これからはPHPとJavaScriptを駆使して自分のサイトのコンテンツは自分で作ろうと思う。
一言掲示板はちょっと更新するだけで書き込まれるというカスだったけど、
やっと「ページにアクセスすると数字が1増えて表示される」という世にいうカウンター的なものができたっぽい。
38Name_Not_Found:2008/04/14(月) 23:02:18 ID:XcAflklm
age
39Name_Not_Found:2008/04/14(月) 23:21:06 ID:???
37 - 960 < 0
40Name_Not_Found:2008/04/14(月) 23:43:56 ID:???
>>29
やっぱりbindは使いたいよな。
prototype.jsはunloadのタイミングでイベントを削除してるよね。
というか、自分としては、IE6とかはリロードとかページ遷移しても
リロード前のdocumentツリー自体を保持しているせいで解放されないと思ってる。
>>30という意見もあるけどメモリーリークを自分で確かめるのは時間くうからやめた方がいいよ。
リーク検知ツールがすべてのリークを検知してくれるわけじゃないし、
実際やってみるとわかるけどIEのメモリ使用量も結構ランダム(増加分含めて)なせいで
修正分がどれだけ効果があったか分からない。

IE8のホワイトペーパーで修正される事象について書いてあるので、これを土台に語ろうよ。
ttp://code.msdn.microsoft.com/Release/ProjectReleases.aspx?ProjectName=ie8whitepapers&ReleaseId=578

過去分は
ttp://msdn2.microsoft.com/en-us/library/bb250448(VS.85).aspx
41960:2008/04/14(月) 23:48:54 ID:???
>>39
前スレでの960を表わしてるからね。
Perlもやってみようかと思ったけど、ごちゃごちゃしてきそうでやめた。
でもifとかwhileとか結構似てるもんだね
42Name_Not_Found:2008/04/14(月) 23:55:43 ID:???
>>41
普通の言語はほとんど一緒だぞ>ifとかwhile
Haskellとか純粋関数型言語でもifはあるな。whileはしらんけど。
43Name_Not_Found:2008/04/15(火) 00:40:04 ID:???
>>27
じゃあ>>27さん書いてください
44Name_Not_Found:2008/04/15(火) 00:52:49 ID:???
>>40
日本語版もあるぞ
ttp://www.microsoft.com/japan/msdn/ie/general/ie_leak_patterns.aspx

循環参照のところ、循環参照解消のためにnullを突っ込めと書いてあるけど、
プロパティのdeleteでOKな感じ。おれはいつもそうしてる。
45Name_Not_Found:2008/04/15(火) 00:59:03 ID:???
4628:2008/04/15(火) 01:03:56 ID:IrMnQWXR
私もかまって頂けると嬉しいです
47Name_Not_Found:2008/04/15(火) 01:41:31 ID:???
>>44
日本語なのに非常に読み辛いという、かなり日本語でおkな酷い文章(というか翻訳)だね。
こっちの方がよっぽど判り易いよ。
ttp://www-128.ibm.com/developerworks/web/library/wa-memleak/
48Name_Not_Found:2008/04/15(火) 01:42:20 ID:???
>>28
344のdesignMode=onをコメントアウト
49Name_Not_Found:2008/04/15(火) 02:05:12 ID:???
>>47
いいね。
まずListing 5のリークだけど、window.onloadを抜けてobjがなくなるくせに、リークするってのが分からんな。
IEでよくあるのは、リロードボタン押していくとメモリがどんどん増えるってやつだけど、
これはそうではなく、onloadが終わってもメモリが解放されてないって意味だよな。
50Name_Not_Found:2008/04/15(火) 02:09:51 ID:???
>>49
ああ、ごめん。3行目訂正。この例は要素のプロパティにぶっこんでるからか。
documentツリー自体はずっと存在してるもんな。
51Name_Not_Found:2008/04/15(火) 18:25:44 ID:???
>>46
身長いくつ?
52Name_Not_Found:2008/04/16(水) 00:59:36 ID:???
>>29
し〜ん。誰も説明できんがなww

タイマーはbind(「function(x){return function(){...x...};}(this)」)しても問題ない。
イベントはunloadとかremoveChild、innerHTMLのタイミングの直前で消せば、メモリーリークは起きないよ。
(つまり相互参照状態にしておいて、そのあと、イベントを切ることで相互参照を解除させる)

とりあえず、一般にメモリリークというと2つ問題があって、
ページ間リーク: リロードするたびにメモリが増える。(ブラウザを終了しない限り解放されない)
ページ内リーク: 操作しているとどんどんメモリが増える。

>>40のIE8のホワイトペーパーとか>>47で出ているようなものは、後者の問題解決が書かれてある。
>>47の後半の方とかは前者のことが書かれてある。

あと>>47のListing 5とか6はDripなどの検査ツールで結果が変わらないためサンプルが悪い。
本当は、innerFunction内でobjへの参照を持っていることが言いたいだけ。
(たとえinnerFunction内でobjを使っていなくても参照持っちゃって)
53Name_Not_Found:2008/04/16(水) 01:00:48 ID:???
すまん。

× >>47の後半の方とかは前者のことが書かれてある。
○ >>40の後半の方とかは前者のことが書かれてある。
54Name_Not_Found:2008/04/16(水) 02:13:36 ID:???
誰も説明できんがなww
誰も説明できんがなww
55Name_Not_Found:2008/04/16(水) 12:31:59 ID:???
メモリリークが気になるなんて、一体どんなものを作ろうってんだ!?
56Name_Not_Found:2008/04/16(水) 22:04:17 ID:???
>>52
再度やりなおせこの初心者が。過去ログとかを無にするような出鱈目で上書きすんじゃねえよ馬鹿が。
57Name_Not_Found:2008/04/16(水) 22:05:36 ID:???
再度やりなおせこの初心者が。過去ログとかを無にするような出鱈目で上書きすんじゃねえよ馬鹿が。
58Name_Not_Found:2008/04/16(水) 22:06:10 ID:???
google作ってって言われるけどな。
googleを利用したサイトを作ってレベルなら問題ないんだけどな。
59Name_Not_Found:2008/04/16(水) 22:06:26 ID:???
再度やりなおせこの初心者が。過去ログとかを無にするような出鱈目で上書きすんじゃねえよ馬鹿が。
60Name_Not_Found:2008/04/16(水) 22:07:21 ID:???
じゃぁ、問題点を指摘すれば>>57
>>52が問題ありありなのは分かるでしょ。
61Name_Not_Found:2008/04/16(水) 22:15:27 ID:???
>>56-57 >>59-60
とりあえず根拠の提示から始めようか
62Name_Not_Found:2008/04/16(水) 23:07:47 ID:???
JavaScriptのこれだっていうまとめサイト欲しいよね
まだまだ発展途上だなあと感じる
63Name_Not_Found:2008/04/17(木) 00:26:55 ID:???
初心者こと>>52です。以下のをDripで見てみて。
setTimeoutの行のうちどれかを有効にする。prototype.jsの関数は別途あるとして。
>>52のうちの前半3行がまずいことの根拠が示せると思う。
これでFAQ14を書き直せるんじゃない。
(Dripのrefsの初期値はこちらは6だったけど、ブラウザのバージョンとかで違うかも)

<html><head><script>
window.onload = function(){
CLASS.M1();
};
function test1(){ alert("5秒経過"); };
CLASS = {
M1: function(){
var node = $("a");
// setTimeout(test1, 5000); //id=aのノードのrefsがずーと6のまま
// setTimeout(function(){ test1(); }, 5000);//ref2が5秒間だけ7になってその後6に戻る
// setTimeout(test1.bind(this), 5000);//id=aのノードのrefsがずーと6のまま
}
};
</script></head><body>
<div id="a">JS</div>
</body></html>
64Name_Not_Found:2008/04/17(木) 08:22:11 ID:???
>>63
そりゃいいんだけど、どう書き直すのがいいってことかな?
65Name_Not_Found:2008/04/17(木) 08:43:17 ID:???
ここにIEのリークのやつは、原因は書いてある(例によって日本語でおkだけど)
ttp://support.microsoft.com/kb/830555/ja
ここには、
「ブラウザで新しい Web ページまたはいつブラウザ ウィンドウが閉じられるを開くと、このメモリ リークが終了します。」
「This memory leak will end when the browser opens a new Web page or when the browser window is closed. 」(英語)
とありますが、そのうち「the browser opens a new Web page」の部分が気になっています。

新しいWebページを開く(画面遷移のことだと思っています)動作をしたとしても、
メモリーリークは終了しないと考えていますが正しいでしょうか?
それとも、IE6とIE7で新しいWebページを開いたときにメモリーリークする・しないが変ったのでしょうか?
66Name_Not_Found:2008/04/17(木) 08:53:48 ID:???
>>65
前に出てた議論では、(1)循環参照によるリークは画面遷移しても
終了しない(ブラウザを終わらせるしかな)、(2)新しいブラウザでは
循環参照があってもガベージコレクションできるようになる、
だったかな。具体的にどのブラウザなら直ってるのかとかは
出てなかった気がする。
67Name_Not_Found:2008/04/17(木) 10:45:59 ID:???
MSのサポートページいつの間にこんなデザインに・・・
68Name_Not_Found:2008/04/17(木) 11:05:47 ID:???
>>65
APPLIES TO
• Microsoft Internet Explorer (Programming) 6.0
• Microsoft Internet Explorer 5.5
• Microsoft Internet Explorer 5.01

とあるがXPIE6でそのページのサンプル実行しても再現しないな。
98のIE6で試してみたら確かにリークした。
もしかしてもう治療済みなの?教えてエロイ人!
69Name_Not_Found:2008/04/17(木) 11:13:28 ID:???

var body = document.getElementsByName("body")[0];
var bodybefore = body.value.substring(0,body.start);
var bodyafter = body.value.substring(body.start,body.value.length);
body.value = bodybefore + emoji + bodyafter;
body.focus();


.start ってこれであってますか?うまく動かないんですけど><
70Name_Not_Found:2008/04/17(木) 11:20:47 ID:???
>>69
body!=name
71Name_Not_Found:2008/04/17(木) 11:22:53 ID:???
>>69
「うまく動かない」ではなく、まずこのコードが「どのように動作する
つもりであるか」「それに対してどのような(期待と異る)動作をするか」
を書く。あとJavaScriptエラーが出ていたらそれを報告する。
72Name_Not_Found:2008/04/17(木) 12:01:01 ID:???
手足スレへ。
73Name_Not_Found:2008/04/17(木) 13:08:13 ID:???
Ajaxian » IE Memory Leaks Be-gone
http://ajaxian.com/archives/ie-memory-leaks-be-gone

とっくの昔にパッチ当たってたのか・・・
7473:2008/04/17(木) 15:47:59 ID:???
いや、やっぱり修正は不完全だったのかwスマン

Ajaxian » IE’s Memory Leak Fix Greatly Exaggerated
http://ajaxian.com/archives/ies-memory-leak-fix-greatly-exaggerated
75Name_Not_Found:2008/04/17(木) 17:01:17 ID:???
>>70
name="body" にしてたのですが変数名よくないですね^^;

>>71
すみませんありがとうございます><
.selectionStartというのが見つかりました。
76Name_Not_Found:2008/04/18(金) 00:04:27 ID:???
>>74
その文章のうち、一番重要な文はこれかな。
all elements not still attached on unload are still leaked, along with the transitive closure over all references Javascript objects

unload時にイベント削除しないと未だにリークしてたって書いてあるの?
「transitive closure」ってのが何か分からないけど、普通のクロージャーのことだったら、
不完全どころか、何も変わっていないんじゃないの?
それともリロードしたときに増えているメモリの量が以前より少なくなったってことでしょうかね。
77Name_Not_Found:2008/04/18(金) 00:07:14 ID:???
input type=fileについて質問です。
ファイルをアップロードする前にファイルサイズを知る方法はありますでしょうか?
よろしくお願いします。
78Name_Not_Found:2008/04/18(金) 00:09:34 ID:???
>>76
transitive closure = 「推移閉包」つまりあるものから直接/間接に
辿れる範囲のものすべて、という意味。関数クロージャとは別物。
一番重要な文の意味は「unload時にdocumentのどこにもくっついて
いないDOMオブジェクトとそこからたどれるもの全てはリークする」
だから対策としては、全部documentにくっつけて切り離さない
ようにするか、切り離すとしてもunload時にはどっかにくつつけ直す。
けれどしかし、この対策の入ったIE6と入ってないIE6が混在する
ことになるわけで、結局循環参照を避ける必要はあるんだろうな…
79Name_Not_Found:2008/04/18(金) 00:11:27 ID:???
>>77
ない。だいたいがファイルの名前だけしか分からないとか
名前すら分からないブラウザが大多数だし。
80Name_Not_Found:2008/04/18(金) 01:14:46 ID:???
>>78
なるほど。すごす。
prototype.jsがやってるようなやり方以外にも、
パッチがあたってることを前提にした場合、その方法が取れるわけですね。
81Name_Not_Found:2008/04/18(金) 05:02:42 ID:???
spew!
http://grimpoteuthis.org/example/spew.html

これが依然メモリリークするサンプルコード。
4つどのケースでも
エレメントをbodyに貼り付けるように変えるとリークしなくなるね。
82Name_Not_Found:2008/04/18(金) 09:04:45 ID:???
Dripでrefsを見ていると、
画面をクリックするだけでHTMLやBODYの値が増えていきます。
これは、Dripが何かしているせいなのか、
何もしなくてもブラウザが増やしているのかをご存じでしょうか?
__drip_hookedというプロパティが追加されているぐらいだから、何かしてると思われますが、
refsが増える原因がそのせいかどうかが分かりません。
8377:2008/04/18(金) 09:09:10 ID:ukCxpmDy
>>79
ありがとうございました。
84Name_Not_Found:2008/04/18(金) 22:49:46 ID:???
HTMLタグってイベント張ってもよいんですかね?
MSDNのonclickなどのイベントのページを見てみると、
そのタグだけないので。
ちゃんとイベントは発動しているけども。
85Name_Not_Found:2008/04/18(金) 23:00:42 ID:???
日本語でおk
86Name_Not_Found:2008/04/18(金) 23:37:32 ID:???
function test1(){..}
function test2(){..}

のように定義した関数の一覧を取得したいと考えています。
(この場合、test1とtest2が欲しい)
firefoxではfor/inでwindowオブジェクトを列挙すれば取得できましたが、
IEでは列挙されませんでした。IEで取得する方法を教えてください。
87Name_Not_Found:2008/04/19(土) 00:00:03 ID:???
HTMLノードに対してattachEventを行っても問題ないでしょうか?
例えばMSDNのonclickの解説ページを見てみると、
そのイベントを設定することが出来るタグの一覧がありますが、
そこにHTMLノードは載っていませんでした。
しかし、実際に以下のようにonclickを設定してみると、発動はしました。
document.documentElement.onclick = function(){ alert("僕、アルバイト"); };
88Name_Not_Found:2008/04/19(土) 03:08:46 ID:???
数値をブラウザ上に表示されないタグに埋め込んでDOM操作で参照したいんですが
そういうふうに使えるタグはありませんか
89Name_Not_Found:2008/04/19(土) 03:34:20 ID:???
>>88
ブラウザ上に表示されないタグ?
逆に表示されるタグって何?
90Name_Not_Found:2008/04/19(土) 04:14:08 ID:???
>>88
input type=hidden もしくはCSSで不可視化
91Name_Not_Found:2008/04/19(土) 06:13:23 ID:enNAGfgH
print("はろーわーるど");
↑をCSSで飾ってhtmlで実行すると普通に表示されるんですがjsで保存して実行するとエラーになってしまいます。
jsだとだめなんですか?
92Name_Not_Found:2008/04/19(土) 07:46:51 ID:???
JScript なんじゃないかとエスパー
93Name_Not_Found:2008/04/19(土) 08:56:35 ID:???
>>91
JavaScriptでそれを表示するんだったら
alert('print("はろーわーるど");');
とかを実行するんじゃないの。画面に出力する機能の
呼び出し方とか種類とかは言語によって全部違うから。
自分のヤマカンで書いても動かないよ。入門書でも買って
ひととおり勉強するべきだと思うがね。
>>87
なんでbodyではだめでhtmlがいいの?
94Name_Not_Found:2008/04/19(土) 09:56:21 ID:???
トップレヴェルのスーパータグだからでしょう。
確かそこは言語特性以外の記述は不可なのでは?
95Name_Not_Found:2008/04/19(土) 10:12:15 ID:???
<canvas>タグに線やらを引いて
その後に(あるいは前に)文字を
document.write()とかdocument.body.innerHTML+=""
で、追加するとcanvas内の線等が消えます。

IEではexcanvas.jsを使ってるんですが、何の問題もないのですが、
Firefoxだと、消えてしまいます。
96Name_Not_Found:2008/04/19(土) 10:16:14 ID:???
事故解決しました。
スレ汚しすいまsねn
97Name_Not_Found:2008/04/19(土) 10:18:39 ID:???
>>81
おお、まじだな。IE8 beta1でも4つともリークしていて、
document.bodyにくっつけるとリークしなくなった。
98Name_Not_Found:2008/04/19(土) 10:28:09 ID:???
>>93 >>94
画面端の方をクリックするとbodyでは拾えないからです。
HTMLに張るのが問題なければ、そこで取りたいと思ったためです。
onclickの場合はバブルするので問題ありませんが、
バブル不可能なイベントをそれで取りたいなと。(キャプチャフェーズは使用しない前提)
99Name_Not_Found:2008/04/19(土) 11:02:18 ID:???
>>97
つか、この問題8でも解決してないのかよw
ひどすぐるw
100Name_Not_Found:2008/04/19(土) 11:09:27 ID:???
至る所で「8は神」みたいな風潮にあるが、所詮はIE。
101Name_Not_Found:2008/04/19(土) 11:33:40 ID:???
>>98
お答えします。DOM level 2 Eventによれば、addEventListener等は
「すべてのNodeにおいて」使用可能。htmlもノードなので使用可能。よかったね。
ttp://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget
102Name_Not_Found:2008/04/19(土) 11:35:35 ID:???
>>88
参考にならない揚げ足取りはどうでもいい
>>90
どうもありがとうございます
103Name_Not_Found:2008/04/19(土) 11:43:36 ID:???
はやくIEでaddEventListener使いてえ〜
104Name_Not_Found:2008/04/19(土) 17:29:05 ID:NMIAkG+P
こんにちは。fromタグにnameが使えなくなるって聞いたんですがホントですか?
これまでたくさん作ったのはどうなってしまうのでしょうか。
105Name_Not_Found:2008/04/19(土) 17:48:13 ID:???
クラス継承図はどこを見ればorどういう処理をしたら分かりますか?
たとえば、
HTMLDivElement→HTMLElement→Node→Object
といったものです。
106Name_Not_Found:2008/04/19(土) 17:53:38 ID:???
AddEventListenerの第一引数に指定可能なものの一覧はどこを見れば分かりますか?
ttp://developer.mozilla.org/ja/docs/DOM:element#Event_Handlers
ttp://developer.mozilla.org/ja/docs/Gecko-Specific_DOM_Events
ttp://developer.mozilla.org/ja/docs/DOM_Events
上記の3種類と考えてよろしいでしょうか?
また、IEのAttachEventに設定可能な一覧がありましたら、教えてください。
MSDNを探しましたが、よく分かりませんでした。
107Name_Not_Found:2008/04/19(土) 17:56:53 ID:???
>>101
ありがとうございます。DOM2では、使用可能ということですね。
ちなみに、なぜIEが設定可能タグ一覧にHTMLをのせてないかの理由は分かりますか?
108Name_Not_Found:2008/04/19(土) 18:26:59 ID:???
>>107
あのね、W3Cだってhtmlタグにonclickは書けない。
「HTMLとして書ける」というのと「DOMで何かできる」
というのは全く別の話。もっとも、「HTMLで書ける」ものは
「DOMでも操作でき」ないと不便だから、「含まれる」という
関係はあるのか。
>>104
それは「新しいHTMLで書いたら」という話で、「これは
HTML 4.01(とかHTML 3.2)だよ」と宣言すれば大丈夫と思われ。
>>105
それはDOM2 HTML/CoreのIDLとかを見るのが便利なんじゃないかな。
interface HTMLDivElement: HTMLElement { ... とかの行ね。
>>106
標準の話なのか特定実装の話なのかどっちさ。IEの方はここ
ttp://msdn2.microsoft.com/en-us/library/ms536343(VS.85).aspx
ttp://msdn2.microsoft.com/en-us/library/ms533051(VS.85).aspx
げげ、こんなにあるんだ…欝だ氏のう(カビがはえてるな…)
109107:2008/04/19(土) 22:20:51 ID:???
>>108
そういう違いがあるのですね。
そのような状況において、マニュアルに載せる載せないの選択肢があると思いますが、
MSは載せないという選択肢を選んだということでしょうかね。
古いIEでは、「DOMで操作不可能」なのでは?というのが気になっています。
110Name_Not_Found:2008/04/19(土) 22:28:08 ID:???
>>109
おそらく、IE4とそれ以前は怪しいだろうけど、IE5
は大丈夫なんじゃないかな? IE4ユーザを想定するサイト
なんて今どき無いでしょ?
111105:2008/04/19(土) 23:18:07 ID:???
>>108
IDLですか。。。
JavaScript側で継承元のinterfaceを辿りたいのですが、その方法はないということですね。
112Name_Not_Found:2008/04/20(日) 19:32:15 ID:N3uxyx7k
JavaScript→Ajax
いえーい(^O^)/
113Name_Not_Found:2008/04/20(日) 20:54:30 ID:???
>>112
KYな俺はどう反応すればいいか分からないからやめてくれorz
114Name_Not_Found:2008/04/20(日) 21:15:19 ID:???
最近、JavaScriptというより日本語が不自由な質問多いな
115Name_Not_Found:2008/04/21(月) 00:30:13 ID:???
結局、
addEventListener("DOMFocusIn", function(){}, false);
はいつ使えるの?
前スレではfirefox3で使えないというのが出てるし、
ttp://developer.mozilla.org/ja/docs/DOM_Events
にはfirefox3のアイコンはないし。
でもネットで検索したら、3から使えるというのが引っ掛かるし。
ちなみに、手元のfirefox2だと動かなかった。指定が悪いんかいな。いえーい(^O^)/
116Name_Not_Found:2008/04/21(月) 01:28:37 ID:???
firefox3 では使えないし、いつ使えるかもわからん。
http://annevankesteren.nl/test/dom/events/005.html
とかで試せばすぐわかる。

以前 xforms 拡張入れて xforms 内であれば使えたんで
ネット検索で出てくるのはそれと間違えてる
117Name_Not_Found:2008/04/21(月) 13:13:24 ID:???
下のボタンでテキストエリアに出力するにはどうしたらいいんですか?
<script language="javascript">
<!--
function hiduke(d){
document.form.texta.value=hiduke(d);
}
//-->
</script>
<form name="form">
<input type="button" name="date1" value=" 日付を下に書き込み " onclick="hiduke('new Date()')"><br>
<textarea cols="50" rows="10" name="texta"></textarea>
</form>
118Name_Not_Found:2008/04/21(月) 13:28:23 ID:???
>>117
その関数hidukeの中身(1行しかないけど)をどういう意図で書いているか
説明してみ。
119Name_Not_Found:2008/04/21(月) 13:52:52 ID:???
<form action="">
<p><input type="button" value=" 日付を下に書き込み " onclick="this.form.elements['texta'}.value=new Date()"></p>
<p><textarea cols="50" rows="10" name="texta"></textarea></p>
</form>
120117:2008/04/21(月) 15:37:23 ID:???
このスレはこの程度か
121Name_Not_Found:2008/04/21(月) 16:16:24 ID:???
>>120
このスレのレベルなら過去スレ全集を見れば分かるから。
ぼうや、再帰呼び出しって知ってるかい。皆あきれて
スルーしてるだけでしょ。>>118なんて親切なもんだぜ。
122質問させて下さい:2008/04/21(月) 18:44:12 ID:XeqBLXIH
やりたいことなんですがランダムで画像を表示して画像をクリックすると指定したURLにとばしてあげる。
画像リンクの上にサイトのタイトルをテキスト+center表示させてあげたいです。

画像をクリックして指定したURLにとばすことは出来ましたが、どうすればサイトタイトルと画像(リンク先)を合わせることが
できるのでしょうか?

<script language="JavaScript" type="text/JavaScript">
<!--
var icnt = 2;
var myDate = new Date();
var d = myDate.getSeconds();
var idx = d % icnt;
var bnr=new Array();
var lnk =new Array();
bnr[0]="1.jpg";
lnk[0]="URL";
bnr[1]="2.jpg";
lnk[1]="URL";
document.write('<a href="' + lnk[idx] + '" target="_brank">');
document.write('<img src="' + bnr[idx] + '" border="0" alt="">');
document.write('</a>');
-->
</script>


アドバイスをお願いします。
123質問させて下さい:2008/04/21(月) 18:51:26 ID:XeqBLXIH
次のようにしたんですが最後の記述がわかりませんでした;;
abc=テキスト表示です。

<script language="JavaScript" type="text/JavaScript">
<!--
var icnt = 2;
var myDate = new Date();
var d = myDate.getSeconds();
var idx = d % icnt;
var abc=new Array();
var bnr=new Array();
var lnk =new Array();
abc[0]="あいうえお";
bnr[0]="1.jpg";
lnk[0]="URL";
abc[1]="かきくこけ";
bnr[1]="2.jpg";
lnk[1]="URL";
document.write(ここをどのように記述すればいいのでしょうか?);
document.write('<a href="' + lnk[idx] + '" target="_brank">');
document.write('<img src="' + bnr[idx] + '" border="0" alt="">');
document.write('</a>');
-->
</script>

何度も申し訳ありません。
124Name_Not_Found:2008/04/21(月) 19:04:26 ID:???
117のフリしたらなんかおっさんが吠えてきたw
125質問させて下さい:2008/04/21(月) 19:11:10 ID:XeqBLXIH
126Name_Not_Found:2008/04/21(月) 19:54:24 ID:???
>>118
練習用にと思ってやってたんで引数は簡単に付けました↓
>>119
ありがとうございます、丁寧に教えてくれて。前に書いた117としばらく
睨めっこしてたらformの後に全角スペースが入ってるのに気がつきました;
こんなアホな間違いを(´Д`;)

ちなみに>>120は自分の書き込みじゃないです。
ご迷惑おかけしました。
127Name_Not_Found:2008/04/22(火) 00:47:24 ID:???
>>116
まじっすか。
じゃぁ、>>106にあるのは、
「使えるかもしれない」リストなんですね。
「使える」リストがどこかにまとまってりしないかなぁ。
128Name_Not_Found:2008/04/22(火) 01:04:41 ID:???
var a = new A();
と等価なコードが知りたくて、
var tmp = function(){};
tmp.prototype = A.prototype;
A.call(tmp);
var a = tmp;
としてみたけど、全然ダメだわ。
もしかして、等価なコードって書けない?
129Name_Not_Found:2008/04/22(火) 02:25:49 ID:???
ECMA262-3rdの15.4.5.1を参考に[[Put]]を実装しろ
130Name_Not_Found:2008/04/22(火) 03:11:47 ID:???
>>128
new A == new A; // false
131Name_Not_Found:2008/04/22(火) 07:25:55 ID:???
どうなったら全然ダメじゃないんだよ
132Name_Not_Found:2008/04/22(火) 08:21:15 ID:???
言語のプリミティブと同等の動作が他の手段で実現できる
場合なんてむしろ少ないだろ。何がやりたいんだろう。
133Name_Not_Found:2008/04/22(火) 08:21:35 ID:???
>>129 できればソースでお願いします。
>>130 new禁止
>>131 prototype.js内にあるnewという単語がなくなって、それでも今までどおり動けばおk
134Name_Not_Found:2008/04/22(火) 08:46:23 ID:???
newがなくなるとどういう利点があるの
135Name_Not_Found:2008/04/22(火) 08:47:21 ID:???
>>133
自分で考える気がないのならとっととよそへ行け。

しかしnewの替わりということだと、オブジェクトは
オブジェクトイニシャライザ {...} で作るとして、
prototypeをどうやって設定するかが問題だよねー。
洩れはnew以外の方法は無いと思っているのだけど、
何かアイデアある?
136Name_Not_Found:2008/04/22(火) 09:53:09 ID:???
__proto__ & watch()
137Name_Not_Found:2008/04/22(火) 10:56:14 ID:???
動くか知らんが

function New(/* constructor [, arg1[, arg2[, ...]]] */) {
  var con = Array.prototype.shift.call(arguments);
  var tmp = con.prototype;
  con.apply(tmp, arguments);
  return tmp;
}

var a = New(A);
138Name_Not_Found:2008/04/22(火) 10:58:54 ID:???
あ、やっぱりだめだ。prototype がぶっ壊れる
かといってコピーすると継承できないしねぇ
139Name_Not_Found:2008/04/22(火) 19:27:08 ID:CHLI8z4C
かなり初歩的な質問ですけど、
onChangeで関数を動かした結果を、特定の場所に出力する。
ということをしたいのですけど、
出力するところの処理が分かりません。
どのようにソースを書けばよろしいのでしょうか?
140Name_Not_Found:2008/04/22(火) 20:40:29 ID:???
>>139
出したい場所のHTML要素にid振って
document.getElementById('ID名').innerHTML = '文字列';
141Name_Not_Found:2008/04/22(火) 21:40:51 ID:???
>>140
そのようになるのですね。
ありがとうございました。
142Name_Not_Found:2008/04/22(火) 23:40:29 ID:???
s
143Name_Not_Found:2008/04/23(水) 01:08:18 ID:???
IEのメモリーリークで2つ質問。IE6以下はパッチあて済み前提。
1.documentツリーから切り離されているDOMオブジェクト同志が
  相互参照している状態でリロードしてもメモリ増え続けない?
2.JSのオブジェクト同士が相互参照している状態でリロードしても
  メモリ増え続けない?
144Name_Not_Found:2008/04/23(水) 01:27:10 ID:???
<link>タグのhrefのURLを動的に決定したいと思っています。

それを実現する処理を、JavaScriptで書けば簡単なのですが、
外部ファイルが非同期な読み込みになってしまいます。
(HTMLならファイルの読み込み完了まで待って、
次の行を読み込み始める動きをしてくれる(defer付与なしの場合))

JavaScriptでlinkノードを動的に追加するさいに、
同期で動かすためのオプションなどご存じではないでしょうか?
145Name_Not_Found:2008/04/23(水) 01:30:52 ID:???
>>144
そんなものはない。linkの内容は何さ。スタイルシート?
もしそうなら、そのファイルの末尾にあるCSS記述がDOMから
取れるようになるまで20msec間隔でチェックするとか。
146Name_Not_Found:2008/04/23(水) 01:38:39 ID:???
>>136
Array.prototype.shift.call(arguments);
ttp://developer.mozilla.org/ja/docs/New_in_JavaScript_1.6
にあるように、Array.prototypeのメソッドを他のオブジェクトに
適用しているコードって見かけますが、
これはどのブラウザでも動作するの?ECMA的にはどうなの?
147Name_Not_Found:2008/04/23(水) 01:41:58 ID:???
>>146
ECMAにはまさに「このメソッドは意図的に汎用にしてあるから
別のオブジェクトに対して呼んでもいいよ」みたいなことが
メソッド毎に書いてあったりする。というかこんなとこで
聞くより自分でECMAチェックした方が早いでしょ。和訳版もある。
(テンプレ参照)
148Name_Not_Found:2008/04/23(水) 01:58:11 ID:???
>>145
CSSだね。
う〜ん。IEならonloadだかonreadystatechangeだかで読み込み完了の
イベントの検知は出来るからそれはやってる。
でも、その処理を入れること自体がいやで、ためしにnodeferとか
利かないかなと思ったんだけどダメでした。
FireFoxとかはCSS読み込み完了のイベント検知出来ないんだっけ?
149Name_Not_Found:2008/04/23(水) 09:41:58 ID:wdo/MqPt
http://javascript.maxux.com/js101.htm

上記ページのように、javascriptでデータベース検索を行い、
同ウィンドウ内に検索結果を表示させたいのですが、
他にサンプルがあったらぜひ教えて下さい。宜しくお願いします。
150Name_Not_Found:2008/04/23(水) 10:12:58 ID:???
ぐぐれ化す
151Name_Not_Found:2008/04/23(水) 11:50:31 ID:???
「○○なサイト知りませんか」とか「○○なサンプルありませんか」とか激しくスレ違い
脳みそがあるんだから考えてからレスしろよ
152Name_Not_Found:2008/04/23(水) 11:53:40 ID:???
>>151
可愛い彼女を手軽に見つけられるサイトありませんか?
153Name_Not_Found:2008/04/23(水) 11:57:04 ID:???
>>152
Yahoo!メールアドレスを取得
154Name_Not_Found:2008/04/23(水) 12:08:30 ID:???
>>151
レスしろよ
はぁ?
155Name_Not_Found:2008/04/23(水) 12:20:11 ID:???
>>153
教えてくれんの?
156Name_Not_Found:2008/04/23(水) 12:32:14 ID:???
世の中には、教えてくれないことがいっぱいあるのです。
なんでも教えてくれるというふうに思い込んでいる頭を、
まず改めないといけません。
社会では、誰も何も教えてくれません。
教えてくれるようなことは、たいてい役に立たないものです。
本当に役立つことは、教えてくれないことの中にあるのです。
―中谷 彰宏「自分で考える人が成功する 」―
157Name_Not_Found:2008/04/23(水) 13:04:24 ID:???
>>155
毎日ごみ箱に届けます
158Name_Not_Found:2008/04/23(水) 17:01:21 ID:???
楽天はやめとけ。自分のメールを探すのが大変だ。楽天の宣伝メールだらけ。
159Name_Not_Found:2008/04/23(水) 19:38:28 ID:fLE4gTmP
No = selOBJ;
if( No.match(/[^0-9]/g) ){
alert("数字以外が含まれてます");
}
取得したデータが数字かどうかを調べたいのですけど、
このようなソースを書いたらエラーになりました。
どこが間違ってるのでしょうか?
160Name_Not_Found:2008/04/23(水) 19:48:01 ID:???
No = selOBJ;
if( No.match(/[^0-9]/g) ){
あたり
161Name_Not_Found:2008/04/23(水) 19:53:16 ID:fLE4gTmP
>>160
間違っては無いはずですよね?
だけど、実際にはエラーで止まるし、
Firebugでも
「No.match is not a function」
と出てきてしまうのですけど、
162Name_Not_Found:2008/04/23(水) 20:08:10 ID:???
matchは文字列用のメソッドだから、
Noが文字列じゃない場合はエラーになるお
163Name_Not_Found:2008/04/23(水) 20:22:04 ID:??? BE:19786043-2BP(2)
Dojoを使っているんですけど、Dijit.Textareaで問題が。
MML@L4b>b&b8cc.L4d<dみたいなテキストを入れると自動的にメールアドレスに変換されてしまい困っています。
扱っているデーターが特殊で、みたいに不等号や&などがあるため、
この結果、&&&&みたいな命令が消えてしまい、データーが化けてしまいます。

この自動変換機能を無効化する方法が知りたいのですけど、わかりませんか?

ソースコード見てもどこで変換しているのかよくわからないし。
http://trac.dojotoolkit.org/browser/dijit/trunk/form/Textarea.js

って、JavaScriptのフレームワークの質問もここでいいのだろうか?
164Name_Not_Found:2008/04/23(水) 20:26:37 ID:fLE4gTmP
>>162
なるほど。PHPやってたせいでごっちゃになってたみたいです。
ありがとうございました
165Name_Not_Found:2008/04/23(水) 21:20:45 ID:???
<script language="JavaScript">
<!--
var hairetu=new Array('日曜日','月曜日','火曜日','水曜日','木曜日','金曜日','土曜日');
var myD =new Date();
var myDay=myD.getDay();
var hyouji='今日は'+hairetu[myDay]+'です。';
document.form.text.value=hyouji;
}
//-->
</script>
<form name="form">
<input type="text" name="text" size="60">
</form>
これでonloadは使わないで曜日を表示するやり方ってありますか?
166Name_Not_Found:2008/04/23(水) 21:42:39 ID:???
>>165
script要素を当該input要素より後に置く。
167Name_Not_Found:2008/04/23(水) 21:56:36 ID:???
>>165
いつも思うんだが、//-->
168Name_Not_Found:2008/04/23(水) 22:50:26 ID:???
もういらないよな
169Name_Not_Found:2008/04/23(水) 23:08:24 ID:???
なんで?
170Name_Not_Found:2008/04/23(水) 23:11:47 ID:???
時の流れかな
171Name_Not_Found:2008/04/23(水) 23:19:17 ID:???
>>170
時代錯誤甚だしいな。ケータイ厨がカモネギ状態で美味しい時代なのに、コメントアウトしなかったら、最悪だ。
172Name_Not_Found:2008/04/23(水) 23:34:03 ID:???
ケータイはどうでもいいがそんなものを書いておくと豚でもない
ことになる時代がすぐそこに来ているよね。
173Name_Not_Found:2008/04/24(木) 00:08:20 ID:???
>>163
Dijit.Textareaはブラウザ組み込みのcontenteEditable使っていて、IEで見ると、勝手にリンクになる。
見た目だけなら対象の要素にのCSSに以下を設定すればごまかせるかもよ。
text-decoration: none;
color: black;
174Name_Not_Found:2008/04/24(木) 00:24:30 ID:???
split(/\r?\n/)とすると、改行ごとに配列にしてくれますが、
連続した改行がまとまってしまいます。
splitにはあくまで正規表現を渡しつつ、
連続の改行がまとまらないようにする方法ってありますか?
175Name_Not_Found:2008/04/24(木) 00:43:11 ID:???
>>64
A14. それらが実行されるときはthisは別のもの(window等)を指してしまってる。
「function bind(x){return function(){...x...};}」という別関数を用意して、
「bind(this)」のようにthisを別の変数に束縛しその変数を使って。

メモリリークは書くとしても別項目でよいかなぁと。
176Name_Not_Found:2008/04/24(木) 00:53:21 ID:???
>>171
すまんが、ケータイってソース見えるの?
177Name_Not_Found:2008/04/24(木) 01:34:34 ID:???
>>171
ケータイ相手に無駄スクリプトまで送ってパケ浪費させるとか
それこそ時代錯誤だろ。外部に置けよ。
178Name_Not_Found:2008/04/24(木) 01:42:21 ID:???
ケータイ中継サーバーが削除してくれるんじゃないの?
179Name_Not_Found:2008/04/24(木) 01:45:41 ID:???
>>167
あとこれもな。language="JavaScript"
180Name_Not_Found:2008/04/24(木) 03:01:28 ID:???
divに設定されているスクロールバーをスクリプトで移動させる方法はありませんか
scrollToやscrollByはwindowのメソッドでつかえないみたいなんですが
181小5:2008/04/24(木) 03:14:41 ID:yfY3kTgw
js をテキストでコピーしたりして、自分で一部追加機能をつくってみたりした時は
キャラセットとかいろいろ、えと、どういう保存のしかたすればいいんでしか?
ふつうに.jsて拡張子つければいいの?エロイ人教えてください
182180:2008/04/24(木) 03:51:37 ID:???
事故解決しました
scrollTop若しくはscrollLeftプロパティーに値を入れる事でスクロールできました
183Name_Not_Found:2008/04/24(木) 04:51:15 ID:???
>>166
どもです!
ジャバスクって何気に奥が深くって難しいっすねorz
184Name_Not_Found:2008/04/24(木) 05:55:23 ID:odH156OE
youtube見ようと思ったら見られなくなりました。
フラッシュプレイヤーを入れるかジャバスクリプトをオンにしてくださいと出ました
フラッシュは確実に入ってるので、ジャバをなんかやらかしたみたいです。
どこを見ればオンに出来るのでしょうか?
185Name_Not_Found:2008/04/24(木) 08:08:59 ID:???
>>184
ここはJavaScriptプログラムを開発する人の質問スレ。
というかそもそもここはWeb制作板なんだから板違い。氏ね。
>>181
文字コードはメインページの文字コードに合わせておくのが
いいんだと思うけどな。そういう話じゃないの?さすが消防で
質問の趣旨が非常に分かりづらいのであしからず。
186Name_Not_Found:2008/04/24(木) 08:17:37 ID:??? BE:69250076-2BP(2)
>>173
情報THX

IE側の仕様でそういうのがあったんですね。
てっきりDojo側で力ずくでこういう処理をしているのかと思っていました。
http://msdn2.microsoft.com/en-us/library/ms537837.aspx
しかし、そうなると特殊なフォーマットを使う場合不便だなぁ・・・。
187Name_Not_Found:2008/04/24(木) 17:39:18 ID:???
ソース内にある「?」
って何なんですか?
188Name_Not_Found:2008/04/24(木) 17:59:59 ID:???
ハア??? もしかして「3項演算子」のこと?
z = (x > y) ? 0 : 1; // x>yなら0、そうでなければ1をzに入れる
189Name_Not_Found:2008/04/24(木) 18:18:39 ID:???
手取り足取りスレが、長いソースを貼ってこれを理解しろ的な流れで、
こっちのスレが初心者用スレとなっているという不思議。
190Name_Not_Found:2008/04/24(木) 18:49:02 ID:???
>>188
ありがとうございました
191Name_Not_Found:2008/04/24(木) 19:32:13 ID:???
もういいよ教えなくて
192Name_Not_Found:2008/04/24(木) 19:38:11 ID:???
スタイルシート
span{font-weight:bold;}
div{margin-left:20px;display:block;}
スクリプト
var expires = new Date();
expires.setDate(expires.getDate() + 30);
function setCookie(name,value,expires){
var cookieStr = name + "=" + encodeURIComponent(value);cookieStr += expires ? " ;expires=" + expires.toGMTString() : "";
return cookieStr;
}function getCookie(name){
var value;
var cookies = document.cookie.split(" ;");
for(i=0;i<cookies.length;i++){
value = cookies[i].split("=");if(value[0] == name){return decodeURIComponent(value[1]);}}return null;
}function menuFold(id,cookie){
var type,node = document.getElementById(id);
if(node.style.display == "block"){node.style.display = "none";type = "false";}
else{node.style.display = "block";type = "true";}
setCookie(cookie,type,expires);
}function loadFold(id,cookie){
var c = getCookie(cookie),node = document.getElementById(id);
if(c == "false"){node.style.display = "none";}
}
HTML
<body onload="loadFold('menu1','Mc1');loadFold('menu2','Mc2')">
<span onclick="menuFold('menu1','Mc1')" onselectstart="return false">メニュー1</span>
<div id="menu1">メニュー1-1<br>メニュー1-2</div><br>
<span onclick="menuFold('menu2','Mc2')" onselectstart="return false">メニュー2</span>
<div id="menu2">メニュー2-1<br>メニュー2-2</div>

こんな感じで記憶機能のあるメニュー折りたたみを作ってるのですが記憶できません。
どうすればいいでしょうか?
193Name_Not_Found:2008/04/24(木) 19:44:14 ID:???
すいません、自己解決しました。
Cookieに書き込むのを忘れてました…(document.cookieをreturnにしてしまっていた)
194Name_Not_Found:2008/04/24(木) 19:48:47 ID:???
document.cookie.split(" ;"); でいいのか?
195Name_Not_Found:2008/04/24(木) 20:04:28 ID:???
("; ")ですね…
196Name_Not_Found:2008/04/24(木) 20:22:04 ID:???
コメントアウトをきちんと整理できてるのって、俺以外だと国内に10人もいないからな、たぶん。
だから、馬鹿どもがすぐに否定し始める。

>>172
ケータイがどうでもいいとか、もう究極のアホだな。むしろJSの方がどうでもいい、大差でな。

>>177
外部に置け?置けない時の対処法だろ。置けるならすぐ置くわな。そもそもこの板でrootやsudoで何でもやってる奴はほとんどいない。
197Name_Not_Found:2008/04/24(木) 20:32:51 ID:???
>>196
気は済んだか
198Name_Not_Found:2008/04/24(木) 20:52:06 ID:???
199Name_Not_Found:2008/04/24(木) 22:14:12 ID:???
>>196
アンタがエラソーに言えば正しくなるわけじゃないだろ。
まあ2ちゃんだから煽るなとは言わないけどね。おつかれ。
200Name_Not_Found:2008/04/25(金) 01:39:02 ID:???
>>174をよろしく。
"a\r\n\nb".split(何か).lengthが3になってほしい。\rを削りつつ。
201Name_Not_Found:2008/04/25(金) 02:38:37 ID:???
IEのバグだから無理
202Name_Not_Found:2008/04/25(金) 02:49:39 ID:???
>>196
文盲乙
203Name_Not_Found:2008/04/25(金) 06:13:24 ID:???
>>196
X|HTMLの仕様すら読んでないことだけはよく分かった。
204Name_Not_Found:2008/04/25(金) 08:30:08 ID:???
とても初歩的な質問なのですが
現在当方のJavaScriptがOFF状態になっているのですが
これをONにするには、どう操作すればよいのでしょうか?
205Name_Not_Found:2008/04/25(金) 08:35:19 ID:???
>>204
スレ違いどころか板違い。よそへ行け。
206Name_Not_Found:2008/04/25(金) 08:49:25 ID:???
>>200
まずreplaceで\rを削除し、その後で\nでsplitしたらどうかな。
207Name_Not_Found:2008/04/25(金) 09:46:31 ID:???
>>204
ワロタ。自分と世界が完全に一体化しているな。
208Name_Not_Found:2008/04/25(金) 13:16:44 ID:???
IE にそんなバグがあったのか
1文字ずつ検索しなきゃならんな
209Name_Not_Found:2008/04/25(金) 22:55:00 ID:???
210Name_Not_Found:2008/04/26(土) 01:09:06 ID:???
211Name_Not_Found:2008/04/26(土) 07:21:02 ID:5Z58ufLR
フォームに最初に「文字を入れる」と入力されていて、

フォームにクリックするとその文字が消える仕組みにしたいんですけど、知識ないですけど、そのやり方を教えてください。
確か
<INPUT TYPE="text" name="?" value="文字を入れる">
の後ろに何か加える?(onclick?)ようなやり方だったと思うんですけど。
212Name_Not_Found:2008/04/26(土) 07:41:13 ID:???
論外
213Name_Not_Found:2008/04/26(土) 08:02:14 ID:???
<INPUT TYPE="text" name="?" value="文字を入れる" onclick="this.value=''">
214Name_Not_Found:2008/04/26(土) 09:55:16 ID:???
>>203
(XHTML|HTML)
215Name_Not_Found:2008/04/26(土) 12:16:25 ID:???
(X?HTML)
216211:2008/04/26(土) 13:04:26 ID:5Z58ufLR
>>213
できたあ!!ありがたや、ありがたや!
217Name_Not_Found:2008/04/26(土) 13:10:29 ID:???
('X?HTML','i')
218Name_Not_Found:2008/04/26(土) 13:10:40 ID:???
>>216
<input type="text" name="?" value="文字を入れる" onclick="if(this.value==this.defaultValue){this.value='';}">
219Name_Not_Found:2008/04/26(土) 19:52:10 ID:???
クリックすると、との条件で質問しているが、ふつうfocusだろ。
220Name_Not_Found:2008/04/26(土) 20:10:17 ID:???
>>219
>>2(6)
双方に理があるんでは? 少なくとも>>211は自分の仕様を脳外にはっき
りと明記して>>2(6)のルールを守っているわけだし、「ふつうは」など
と意味不明の「常識」で他人をどうこういうべき領域でもない希ガス。
221Name_Not_Found:2008/04/26(土) 21:01:28 ID:???
いや、ここはfocusだろ
222Name_Not_Found:2008/04/26(土) 21:54:13 ID:???
>>220
おまえが意味不明。focusでより広範囲のアクションをカバーできる。
223Name_Not_Found:2008/04/26(土) 22:32:13 ID:???
いや。意味不明とか言われても・・・。おれ、見てて思ったんだ。そし
て、思い出した。>>2(6)のこと。仕様って個のものだと思うんだ、結
局のところ。個のベンダーがユーザとしての個を培養しているだけの
ことでさ。だから自分のよいと思うイベントをデザインした人間はそ
れが理想的なイベントでいいのじゃないか、って。ま、どう批判しよ
うと自由ではあるんだけどさ。そういうことだから、別に。
224Name_Not_Found:2008/04/26(土) 23:12:36 ID:???
Web系の画面を設計するときに、イベントはよく間違えるよな。
click、mousedown、focus。
これは机上だけだと思っていた仕様と違ってるって気づきにくい。
225Name_Not_Found:2008/04/27(日) 00:24:48 ID:???
「キース・ジャレットのゴルトベルク変奏曲聴きたいんだけど…どこに売ってるかな?」
「あそこの○○レコードで売ってたよ」
「ありがと。行ってくる」

「そこはグレン・グールドだろ常考」


…本人がわざわざキースを指名してんのにこういう押し付けがましい輩はどこにでも居る。

まぁあえて好意的に解釈するなら、
「本人はグールドを知っていてキースを選んだのではなく、そもそもグールドを知らないのではないか。
 知ってたらそっちを選ぶかもな。知っておいて損はあるまい」
という親切心からかもしれない。
226Name_Not_Found:2008/04/27(日) 01:12:53 ID:???
A「 新宿から有楽町まで山手線で行きたいのですが、何番線ホームで乗れば良いのですか?」
B「それなら中央線で神田まで行って、そこから山手線に乗り換えた方が速いよ。」
Aが観光やらで山手線を利用する必要があるなら別だけど、
Bの提案に問題があるとは思えないね。

しかし>>225は、ジャズがお笑いのネタとして使われる理由の一端が判るレスだよ。
227Name_Not_Found:2008/04/27(日) 01:56:24 ID:???
素直に南蛮船ホームで乗るかを答えるのも
問題なっしんぐ

一番親切なのは
とりあえず質問に答えた上で
質問の意図を汲んで提案してみるってことで
228225:2008/04/27(日) 02:15:14 ID:???
ちなみに俺自身はグールドの55年版で聴いてるよ。JAZZは聴かん。貶めるつもりもないけど。

ただ、一部のいわゆるクラヲタの“俺の1番が世界の1番、他はみんなクソ”的押し付けがましさ
には端から見ているだけでもほとほと辟易してるんで。

スレ違いスマソ。
229Name_Not_Found:2008/04/27(日) 02:23:14 ID:???
痛い流れだな
230225:2008/04/27(日) 02:36:08 ID:???
> ただ、一部のいわゆるクラヲタの“俺の1番が世界の1番、他はみんなクソ”的押し付けがましさ
> には端から見ているだけでもほとほと辟易してるんで。

あーこの部分については純粋に(一部の)クラヲタについての独立した感想で、
このスレのfocus提案者を例えているつもりは無い。

気分を害したなら申し訳無い。どこまでもスレ違いスマソ。
231Name_Not_Found:2008/04/27(日) 03:19:05 ID:???
これが真性のヲタってやつだな。
232Name_Not_Found:2008/04/27(日) 03:28:54 ID:???
そうでもないか
233Name_Not_Found:2008/04/27(日) 09:54:32 ID:???
>>211は早い段階で>>219にレスをつけるべきだったな
それはともかく、

> 後ろに何か加える?(onclick?)ようなやり方だったと思うんですけど。

onfocus を知らないということが読み取れる。>>226のAは観光目的ではなかったわけだな
ちゃんと質問を読もうぜ
234Name_Not_Found:2008/04/27(日) 11:06:01 ID:???
しつこいよ
235279:2008/04/27(日) 11:49:09 ID:4fylHKUh
テキストボックスの内容が変更された瞬間に、
javascriptを実行するにはどうすればいいのでしょうか?

onchange= だと、別の場所にフォーカスを移さないと実行されず、
onkeydown= だと、内容が変更される直前に実行されてしまいます。
236Name_Not_Found:2008/04/27(日) 11:49:58 ID:???
こいつよし
237Name_Not_Found:2008/04/27(日) 12:49:51 ID:y3ZbfC5e
(235-279)<0
238Name_Not_Found:2008/04/27(日) 13:23:07 ID:???
フォーカスが当たってから0.1秒毎に監視しとけ
239Name_Not_Found:2008/04/27(日) 14:58:22 ID:???
変更された瞬間とは?これって大問題だよね。banana!=bananをエンジンに
どう判断しろというのか。
240Name_Not_Found:2008/04/27(日) 15:28:22 ID:???
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html><head><title>???</title>
<script type="text/javascript">
var tid = 0, str = '', elt;
function set(){elt=document.getElementById('t0');tid=setInterval(chk,100);}
function unset() { if(tid) clearInterval(tid); }
function chk() {
if(str == elt.value) return;
document.getElementById('d0').innerHTML = str + '->' + elt.value;
str = elt.value;
}
</script>
</head><body>
<div><input id="t0" type="text" onfocus="set()" onblur="unset()"></div>
<div id="d0"></div></body></html>
241Name_Not_Found:2008/04/27(日) 15:39:38 ID:???
>>235
DOM操作によるデータ変更では無く、ユーザーのキー入力による変更を反映したいなら、
onkeyup。

キーを離す前に(押しっぱなしで連続入力している最中など)に、
tabやクリックで入力フォーカスが移った場合には、
onkeyupイベントが発生しないので、onblurと組み合わせて使うとか。
242Name_Not_Found:2008/04/27(日) 15:51:23 ID:???
onkeyupは日本語IMEがからんでいるとうまく行かないよ。
なので>>240
243Name_Not_Found:2008/04/27(日) 16:30:52 ID:???
>>242
WinXP(IME2002)上のFirefox2とIE7
Win2k(IME2000)上のFirefox2とIE6
どちらの環境でも、IEでは日本語入力時でも毎回keyupイベントが発行されるが、
Firefox2では日本語入力が確定した時にだけkeyupイベントが発行される。
その他に問題があったっけ?

しかしてっきり>>240は一種のジョークかと思ったがマジレスだったとは。
244Name_Not_Found:2008/04/27(日) 16:34:06 ID:???
setInterval って JavaScript の最終手段だよね
クロスブラウザって大変!
245Name_Not_Found:2008/04/27(日) 17:43:02 ID:???
onclick指定はそこまで読んだ末のことだったのか脱ハット
246Name_Not_Found:2008/04/27(日) 18:54:33 ID:???
ある日突然ニコニコやなんとか動画その他もろもろ動画サイトで動画が見れなくなってしまいました。
「java scriptを実行許可にしてください」と出るのですが、その辺は一切弄ってないし
インターネットオプションで確認しても有効になってました。
java、J2SEを再インストールしても状況は変わりません。
心覚えがあるとしたら、前スパイウェアに侵入され、スパイウェアを駆除するソフトを使ったのですが、
PCを起動した際に重要なレジストリの変更を・・・と出てきたので遮断としてしまいました。
OS再インス以外で解決策があればお願いします。
247Name_Not_Found:2008/04/27(日) 19:04:51 ID:???
>>246
セキュリティ初心者質問スレッドpart107
http://pc11.2ch.net/test/read.cgi/sec/1207069819/
上記スレの方が適切かと思われます。
248Name_Not_Found:2008/04/27(日) 19:11:52 ID:???
>>247
JAVA関連で問題が起きているのになぜセキュリティ?
249Name_Not_Found:2008/04/27(日) 19:13:25 ID:???
すみません、テンプレよく読んで無かったです
無かったことにしてください
250Name_Not_Found:2008/04/27(日) 19:49:33 ID:otfhk5pv
YouTube での "JavaScript を On にしてくれ" 関連の質問があるようだけど,
あれは script 中のタイプミスが原因だったそうな.
で, 現在は修正されているはず.
すれ違いだけど, この前から しばしば見かけるので.
251Name_Not_Found:2008/04/28(月) 10:30:30 ID:???
フォーム入力チェック用のライブラリっていくつかあるみたいだけどどれがいいんだろうねえ
252Name_Not_Found:2008/04/28(月) 11:06:02 ID:???
よくある下記の記述ですが、IE6だとOKですがFireFox2だと表示されません。

onmouseover="status='ホニャララ';return true" onmouseout="status=' '"

ググッたりして調べてみたのですが、理由が解らなかったのですが、何が
原因なのでしょうか?

あとPC上でローカルに表示させた時は、IE6でも表示されないので、それが普通
だと思ってましたが、何故か下記のだと FireFox2 でも使える上にPC上でも利き
ました。

onmouseover="this.style.border='1px solid #000000'" onmouseout="this.style.border='1px solid #ffffff'"

これが何故PC上でのみIE6だと利かないのか、やはりググッたりしてみても
解りませんでした。理由や対策が解れば教えて頂けますか?
253Name_Not_Found:2008/04/28(月) 11:40:08 ID:???
>>252
まずstatusじゃなくwindow.statusと書いた方がいいかも。手前に
statusという変数がある場合があるかも知れないし。で、window.status
をJavaScriptから書き換え可能かどうかはブラウザ毎に、さらに実行環境
(ローカル、サーバ)毎に、設定できたような気がするんで、その設定に
よるんじゃないのかなー。

IEでthis.style.borderへの設定がローカルの場合だけできないという
のは理由がよく分からないね。ともかく、Web制作なんだからサーバ
に置いた場合前提で開発するのがいいんじゃないかな。
254Name_Not_Found:2008/04/28(月) 12:33:40 ID:???
動的にチェックされたチェックボックスを生成したいと思い以下のコードを書きました。
FireFox2ではチェック済みのチェックボックスがtestdivに生成されましたが
IE6ではチェックされていないチェックボックスが生成されました
IEでもチェック済みのチェックボックスを生成する方法をご存知でしたらご教示ください
<html>
<head>
<script langueage="JavaScript"><!--
function $(id){ return document.getElementById(id); }


window.onload=function(){
newInput=document.createElement("input");
newInput.setAttribute("type","checkbox");
newInput.setAttribute("checked",true);
$("testdiv").appendChild(newInput);
}
// --></script>

</head>
<body>
<div id="testdiv"></div>
</body>
</html>
255254:2008/04/28(月) 12:40:56 ID:???
すいません自己解決しました
チェックボックスにidを設定して
newInput.setAttribute("id","hoge");
appendChildした後にcheckedをtrueにしたら
$("hoge").setAttribute("checked",true);
IEでもチェック済みになりました
256Name_Not_Found:2008/04/28(月) 13:31:49 ID:???
>>254-255
HTMLタグでいうcheckedはDOMでは「defaultChecked」だけど、
そのsetAttributeはどっちをセットしてるんだろうねー。
やっぱりsetAttributeを使わない方が無難だと思うがどうよ。
257Name_Not_Found:2008/04/28(月) 13:36:56 ID:???
>>253
レスサンクスです。

じつわ window.status に関しては、PCローカルで既に試してたのですが、IE6
でもFireFox2でも駄目でした。(ネット上では未確認です。)

因みにPCの環境はWindowsXPsp2の最新状態です。IE6とFireFox2も同じく最新
状態です。

確かにネット上で全てオケなので、あまり気にする必要は無い訳ですが、status
の件だけなら、「まあそんなものか。」と思ってたのですが、this.style.border
で逆みたいな現象が出たので、不思議に思った次第です。

で、もしかしたら記述方法とかで、PC上でも自由に動作確認可能に出来るなら、
便利だなと思って質問した次第ですが、どうも環境設定の問題だと厄介そうで
すね。
258Name_Not_Found:2008/04/28(月) 13:45:56 ID:???
>>257
しまった!!!

status に関しては ネット上でも FireFox2 だと駄目だったんだ。

で、window.status に変更したモノをネットにアップして試したところ、
IE6だとOKでFireFox2だと駄目なのは、全く一緒でした。orz

因みにFireFox2 だと下部バー上には「完了」という文字が出たままになります。

環境設定だけの問題だと、使ってるプロバイダのサーバー環境のせいなら対処が
困難で困るのですが、自分のPC環境のせいなら他のユーザーは支障なく見れる筈
ですが、このあたりはどうなんでしょう?
259Name_Not_Found:2008/04/28(月) 14:12:51 ID:???
設定
260Name_Not_Found:2008/04/28(月) 14:15:11 ID:???
>>258
そもそも自分のFFx2の設定の「JavaScriptでステータスバー変更を許す」
をチェックしているのかいないのか。チェックしているのにできないのなら
さすがにバグでしょ?
261Name_Not_Found:2008/04/28(月) 14:35:59 ID:???
バグでもなんでもそもそもそこはそういうものを表示するところ
じゃないし、近い将来FFやIEでそれができなくなっても不思議で
はない。
262Name_Not_Found:2008/04/28(月) 14:38:04 ID:???
もちろん自分はうるさいのでスクリプトでstatusを変更するのは
不許可にしているけどね。
263Name_Not_Found:2008/04/28(月) 15:33:53 ID:???
>>259-262
レスどもです。

どうやらFireFox自体に許可/非許可の設定があり、フィッシング等のURL偽装
の問題の為に、デフォルトで非許可、又は今後この機能自体を無くしていく
方向みたいですね。
264Name_Not_Found:2008/04/28(月) 20:55:56 ID:???
このスレで出た未決の問題のうち重要そうなものをまとめてみた。

>>82 Dripのrefsの数値の謎について
>>86 IEでトップレベル関数の列挙方法
>>127 addEventListenerの「使える」イベント一覧
>>143 IEのメモリーリーク
>>148 FireFoxでタイマーを使用する以外での外部ファイル読み込み完了検知方法
265Name_Not_Found:2008/04/29(火) 00:06:01 ID:???
>>261
>そもそもそこはそういうものを表示するところじゃゃない
いやいや、そういうものを表示するところだよ。
デフォルトの動作(たとえばIE7ならhref属性値やaction属性値の絶対URI表現を見せること) を残して、その隙間をぬってページ独自の何かを便利な形で見せるのが面倒くさいだけ。だから普通はやらないが、使えるコスト次第では凝ってみる価値はある。
266Name_Not_Found:2008/04/29(火) 01:08:15 ID:???
>>265
ステータスバーの本来の役割は、現在の状態や機能を説明するなど、補助的な情報を表示する為に使われる。
が、ブラウザでのステータスバーは、ユーザーとしてはリンク先が表示されるという事を前提としている為、
リンク先を隠匿する目的などに悪用されるのを防ぐ為、現在ではスクリプトによる変更が制限されるのが一般的。

これを知らないとは10年くらい冬眠していたとか?
267Name_Not_Found:2008/04/29(火) 05:24:02 ID:???
<script type="text/javascript">
<!--
function chk(){
for(i=0;i<3;i++){
if(document.form.fruit[i].checked){
var fruitA=document.form.fruit[i].value;
}
}
alert('あなたは'+fruitA+'が好きですね。');
}
-->
</script>
<p>好きな食べ物を入力してください。</p>
<form name="form">
<input type="radio" name="fruit" value="りんご" >りんご<br>
<input type="radio" name="fruit" value="みかん" >みかん<br>
<input type="radio" name="fruit" value="いちご" >いちご<br>
<p><input type="button" name="button" value="ボタン" onclick="chk();"></p>
</form>
これでラジオボタンが入力されていないときアラートで入力されてません
って表示するにはどうしたらいいんですか…?(・・)
268Name_Not_Found:2008/04/29(火) 05:35:51 ID:???
>>267
fruitAがundefinedになるべ。
269Name_Not_Found:2008/04/29(火) 06:06:00 ID:???
ループ抜けた後に
if(typeof fruitA =="undefined"){alert("入力されていません");}
でいけると思う
270Name_Not_Found:2008/04/29(火) 10:30:15 ID:???
<script type="text/javascript">
<!--
function chk() {
  var radio = document.forms['form'].elements['fruit'];
  for (var i = 0, len = radio.length; i < len; i++) {
    if (radio[i].checked) {
      alert('あなたは ' + radio[i].value + ' が好きですね。');
      return;
    }
  }
  alert('入力されてません');
}
// -->
</script>
<p>好きな食べ物を入力してください。</p>
<form name="form" action="">
<input type="radio" name="fruit" value="りんご">りんご<br>
<input type="radio" name="fruit" value="みかん">みかん<br>
<input type="radio" name="fruit" value="いちご">いちご<br>
<p><input type="button" name="button" value="ボタン" onclick="chk();"></p>
</form>
271Name_Not_Found:2008/04/29(火) 11:30:28 ID:???
>>269
!fruitA
272Name_Not_Found:2008/04/29(火) 13:48:50 ID:???
>>266
でもググッたりしても、この手の情報がなかなか見つからない程度にしか、普及
してない?知識なのも事実では?

英語のQ&Aみたいな掲示板なんかの方が、良く見つかったりしたし、FireFoxの普及
度合いが日本で低いせいかもしれんけど。
273Name_Not_Found:2008/04/29(火) 14:02:32 ID:???
単に日本のソフトウェア技術って先進国中で最低だから
流通しているまっとうな情報の量も少ないとかじゃないのかなー
まあともかく、ここのスレでは嘘は嘘だと厳しく指摘してもらえるので。
274Name_Not_Found:2008/04/29(火) 20:18:50 ID:???
275Name_Not_Found:2008/04/30(水) 02:25:38 ID:???
>>268
色々試してたら何とかundefinedが消せました!ありがとうございました。
>>269
ありがとうございます!試してみたけたけど読み込んだ瞬間にアラートが
表示されるようになりました↓
>>270
やってみたら出来ました!入力されてませんアラートを表示するだけなの
に結構大変なんですね;ソースを見て勉強します(`・ω・´)
276Name_Not_Found:2008/05/01(木) 01:22:38 ID:???
>>264 >>148
CSSをXMLHttpRequestで取ってきて、evalするのはどう?
eval自体は同期で実行されるからいいんじゃね。
277Name_Not_Found:2008/05/01(木) 01:41:31 ID:???
よーし、おじさんも同期、非同期の質問しちゃうぞ。

element.click()とすると、すぐには実行されずに、JavaScriptの処理が終了した後、
IEがclickイベントを発動します。
JavaScriptの処理が終了せずに、clickイベントを実行させる
(キャプチャーフェーズ→バブリングフェーズ→デフォルト動作を実行後、関数が戻ってくるイメージ)
ことは出来ないのでしょうか?
278Name_Not_Found:2008/05/01(木) 04:11:19 ID:???
正規表現オブジェクトに誤ったパターン("*"など)を渡すとエラーになってしまうため
事前にパターンの正しさをチェックしたいのですが
チェックするための手段(関数等)は標準で用意されているのでしょうか?
もしあれば教えてください。よろしくお願いします
279Name_Not_Found:2008/05/01(木) 04:21:00 ID:???
try...catchでいいんぢゃないか
280Name_Not_Found:2008/05/01(木) 08:20:01 ID:???
>>277
click()した後の処理すべてをsetTimeout(関数, 0);の中でやる
ように直せばいいんじゃないの。試してないけど。
>>276
CSSをeval()する方法ってどうするの。サンプルキボン。
281Name_Not_Found:2008/05/01(木) 09:09:03 ID:???
つか、evalじゃなくて、innerHTMLじゃないか。
通信も同期を指定すれば、いいかなと。
むりやりevalしたきゃ、JSでの処理もそのCSSのなかに書いとく。
282Name_Not_Found:2008/05/01(木) 09:14:46 ID:???
>>281
だからeval()でもinnerHTMLでもいいんだけど、サンプルキボン。
JavaScriptコードを評価するのにeval()、HTMLを突っ込むのに
innerHTMLというのは当り前だから分かるんだけど、CSSを
1発で適用する方法というのは知らないので知りたい。
283Name_Not_Found:2008/05/01(木) 11:38:59 ID:GpZvn/5z
>>281-282
わざと知らんぷりしてるのかも知れないけど,
eval() も innerHTML も使う必要はないんだよねぇ.

document.body.cssText='~';
もしくは element : elm だとして
elm.cssText='~';
そもそも .css は ただの text-file なんだし...
284Name_Not_Found:2008/05/01(木) 11:41:51 ID:???
>>283
それはそのエレメントに特定じゃん。そうじゃなくてさまざまな
要素(セレクタ)の指定がまざったCSS全体を一括して突っ込みたい場合は?
だいたいHTMLだって.jsだって「ただのテキスト」ですぜ。
つ text/javascript、 text/html。
285Name_Not_Found:2008/05/01(木) 11:52:58 ID:GpZvn/5z
またまた 恥ずかしい失敗を...
document.body.style.cssText='~';
elm.style.cssText='~';

>>284
しっつ礼しやした.
まあ, そういった問題はあるけれど,
body を対象に しただけでも それなりの効果は期待できると...
286Name_Not_Found:2008/05/01(木) 12:09:12 ID:???
>>285
そのレスすら話題からどんどん離れてる件
バカは黙ってればいいよ
287Name_Not_Found:2008/05/01(木) 13:15:28 ID:ql0nI7Yy
function a(arg){hoghoge};
a = function(arg){hogehoge};
のように、
関数、無名関数の最後には ; が必要なのでしょうか?
288Name_Not_Found:2008/05/01(木) 13:18:51 ID:???
>>287
ちゃんと自分で文法を読めるようになれ。
1行目は無名関数なのか?もしそうなら、それを何に使うつもりなのか?
2行目の最後の「;」は代入式文の最後の「;」であって無名関数とは無関係。
a = 0; の最後の「;」と同じ。
289Name_Not_Found:2008/05/01(木) 14:02:23 ID:???
>>288
>関数、無名関数の
って書いてあるんだから1行目は無名関数として書いてないだろw
それぐらい読み取れよ・・・低レベルだな
290Name_Not_Found:2008/05/01(木) 14:08:17 ID:ql0nI7Yy
>1行目は無名関数なのか?
誰もそんな事言ってないと思いますが…
>何に使うつもりなのか?
知りません。例文にあったので、必要なのか質問しただけです。
何故そんな事を聞かれるのか解りません。

>無名関数とは無関係
しかし、次の行に他の分があっても、この場合の ; は外しても動くようです。
必ず付けないといけない物なのでしょうか?
291Name_Not_Found:2008/05/01(木) 14:13:23 ID:???
>>290
>>287 の 1 行目は「関数宣言」といって、行末のセミコロンは不要
2 行目は「関数式」といって、式なので行末に改行かセミコロンが必要
292Name_Not_Found:2008/05/01(木) 14:26:14 ID:???
ありがとうございます。
今後 ; を付ける事にします。
293Name_Not_Found:2008/05/01(木) 15:20:53 ID:???
>>290
JavaScriptでは行末のすべての「;」は省略可能だ。だから
外しても動くのは当り前。

そもそも「自分のブラウザで試してみて文法の適否を調べる」
なんて無意味。その処理系にバグがあったら勘違い野郎に成り下がる
だけだろ。地道に文法を勉強しろ。
294Name_Not_Found:2008/05/01(木) 16:24:25 ID:???
俺「行末に改行」ってアホなこと言ったなorz
295Name_Not_Found:2008/05/01(木) 18:18:37 ID:s+mmErJG
質問させていただきます。

ホームページで、メニューのところを、CSSで、フレーム風にし、スクロールできるようにします。
通常のフレームでは、スクロールして、ある項目をクリックした場合
スクロールした状態が保たれますが、CSSのフレーム風では
スクロールした状態が保たれません。

これをJavaScriptでスクロールした状態を保つことはできますでしょうか?
もしできるのならば、やり方、もしくは、参考サイトを教えていただけないでしょうか。
どのようなキーワードで検索すればいいのかも分かりません。

どうぞよろしくお願いいたします。
296Name_Not_Found:2008/05/01(木) 18:30:51 ID:???
>>295
何かを次のページに引き継ぐには Cookie か location.search と相場が決まってる
最終的にブロック要素をスクロールさせるには element.scrollTop = x;
297Name_Not_Found:2008/05/01(木) 18:40:34 ID:PlHgci7T
意外に親切な回答が... (がっかり)
298295:2008/05/01(木) 19:27:59 ID:s+mmErJG
>>296
どうもありがとうございます。
element.scrollTop = x; で検索してみましたが、よく分からないです・・
299Name_Not_Found:2008/05/01(木) 20:22:03 ID:???
<div id="HOGE" style="height:100px;overflow:scroll;">
<p>1 行目</p>
<p>2 行目</p>
<p>3 行目</p>
<p>4 行目</p>
<p>5 行目</p>
<p>6 行目</p>
<p>7 行目</p>
<p>8 行目</p>
</div>
<p><button onclick="document.getElementById('HOGE').scrollTop+=10">scroll</button></p>
300295:2008/05/01(木) 20:36:16 ID:s+mmErJG
>>299
ありがとうございます。
<p>8 行目</p> を<p><a href="./index.html">8 行目</a></p>で試してみましたがスクロールが戻ってしまいます・・


301295:2008/05/01(木) 20:41:19 ID:s+mmErJG
<a href="./index.html" onclick="document.getElementById('HOGE').scrollTop+=10">テスト</a>

こういうふにもしてみましたがダメですね・・
302Name_Not_Found:2008/05/01(木) 20:52:17 ID:???
Cookieなどを使えというレスがあるようだが読んで試してないのか。
303Name_Not_Found:2008/05/01(木) 20:56:05 ID:???
>>300
ふざけてんの?
scrollTop の使い方が分からないというからその部分のサンプルを貼ったんだ
>>296を100回音読しても意味が分からなければあきらめろ
304295:2008/05/01(木) 21:07:45 ID:s+mmErJG
すみませんでした!
Cookieですね。
Cookieの意味は分かるのですが、Cookieとメニューのonclick="document.getElementById('HOGE').scrollTop+=10"を
どのようにして結びつけるのか謎ですね・・。

何というキーワードで検索すればよろしいでしょうか?
305Name_Not_Found:2008/05/01(木) 21:09:17 ID:???
次の方、質問どうぞ〜♪
306Name_Not_Found:2008/05/01(木) 21:40:29 ID:???
>>280
それはさすがに難しいね。
本来非同期じゃなければならない処理を、
なんとか同期で処理したいという話題なので、タイマーは避けたい所です。

>>282
element.innerHTML = "<style>" + str + "</style>";

で、strが通信でもらってきたCSSが書かれた文字列。

>>285
cssTextは要素を特定しないといけないから、個人的につらい。
addRule/insertRuleなら文字列指定でセレクタとその値を突っ込める。
307Name_Not_Found:2008/05/01(木) 21:50:51 ID:???
>>293
ECMAではでは「;」は必須みたい。
ただ、JavaScriptの実装のほとんどは改行でよいけどね。
ECMAの仕様だけみて、改行を全部削ってみたら動かなくなったw
308Name_Not_Found:2008/05/01(木) 22:08:53 ID:???
エー、7.9.1 自動セミコロン挿入規則ってあるやん
309Name_Not_Found:2008/05/01(木) 22:27:34 ID:???
へぇ〜、なんと。
A 文法要約 (Grammar Summary) を元に作成した構文解析を作ったんだけど、
そこで通らなかったからてっきり。
事前に「;」を入れる処理が別途必要なのね。
310Name_Not_Found:2008/05/01(木) 22:34:17 ID:???
>>306
Mozでやってみたけど動作しませんでした。どんな要素に
対してやればいいのですか?<style>要素って<head>の中に
入れますよね、ふつう。
311Name_Not_Found:2008/05/01(木) 22:36:03 ID:???
>>304
このスレ的には十分な回答がなされているので、あなたがそれで
分からないなら自分で勉強するか手取り足取りスレでも逝ってください。
312Name_Not_Found:2008/05/01(木) 22:38:35 ID:???
>>310
おれは逆にFireFoxでしか動かなかったぞ。
なんかIEとかSafariだと防がれてるみたいなんだが。
313312:2008/05/01(木) 23:14:20 ID:???
とりあえず、こっちのコードを投稿しとく。
IEはd.firstChildが作成されなかった。
SafariはStyleノードは作成されて、documentツリーにぶら下げることもできたけど画面に反映がされなかった。
OperaとFireFoxでは問題なく動作した。

-------------------------------------------------
<html><head>
<script>
function setCSS(str){
var d = document.createElement("div");
d.innerHTML = "<style>" + str + "</style>";
document.body.appendChild(d.firstChild);
}

function test1(){
setCSS("body { background-color: lightblue; }");
}

</script>
</head><body>
<div onclick="test1()">ここをくりっく(・∀・)</div>
</body></html>
314Name_Not_Found:2008/05/01(木) 23:51:16 ID:???
つうか、CRUDのRが含まれる処理はもう普通にページ遷移させようや。今時、「超高アクセスサイトを除いて」、大概のウェブサーバシステムは余力十分だろ。
315Name_Not_Found:2008/05/02(金) 00:13:09 ID:???
>>314
>>21 >>196
とりあえず、ここはJavaScriptを質問するスレだ。わかってやってるんだろうけど。
316Name_Not_Found:2008/05/02(金) 00:27:23 ID:???
>>314
だからページ遷移させたときにスクロール位置が先頭に戻る
のを何とか元の位置に保ちたいという質問だったんじゃねの?
317Name_Not_Found:2008/05/02(金) 00:28:23 ID:???
>>313
divの中にstyleってvalidなHTMLじゃないよね?
318Name_Not_Found:2008/05/02(金) 01:05:06 ID:???
body に含まれてはいけないようだよ
319Name_Not_Found:2008/05/02(金) 08:51:15 ID:???
setCSSを以下のように修正するとSafariでは動作するようになったよ。IEはダメだったけど。

function setCSS(str){
var d = document.createElement("div");
d.innerHTML = "<style>" + str + "</style>";
document.getElementsByTagName("head")[0].appendChild(d.firstChild);
}

あとはIEで動く方法が見つかればいいね。
validなHTMLかどうかはあまりこだわらずに、動くコードを見つけて行きたい。
320Name_Not_Found:2008/05/02(金) 09:40:46 ID:ZiOgF6gn
UTF-8のページでJavaScriptを書いたら他の規格で見ている人の
ブラウザではヘンなことになりますか?
だとするとプログラムの統一性ってどういうことになるんでしょうか。
321Name_Not_Found:2008/05/02(金) 10:19:17 ID:???
ひとつのコードでIEとIE以外とを同時に対応させるのは難しいね。

function setCSS(str) {
var style = document.createElement('style');
try { // IEでエラー
style.appendChild(document.createTextNode(str));
} catch (e) {}
document.getElementsByTagName('head')[0].appendChild(style);
if (style.styleSheet) style.styleSheet.cssText = str;
}
322Name_Not_Found:2008/05/02(金) 12:17:18 ID:???
>>321
GJ! これはすごい。感動した。
>>320
別にならないでしょ。JavaScriptとそれを入れているページの
文字コードを合わせておけばいいんだし。1つのJavaScriptファイル
を色々な文字コードのページに入れたいということなら、日本語を
直に書くのはやめて、全部「\uXXXX」で書けばいい。面倒だけど。
323Name_Not_Found:2008/05/02(金) 12:25:28 ID:???
> ひとつのコードでIEとIE以外とを同時に対応させるのは難しいね。

別に特別難しくないのでは、

if( document.all ) {
//IE用の処理
} else {
//それ以外のブラウザ用の処理
}
324Name_Not_Found:2008/05/02(金) 12:32:43 ID:???
document.all は判定には使えないかと
325Name_Not_Found:2008/05/02(金) 15:29:31 ID:???
>>323

if (document.all) {
 // IE, Opera, Safari
} else {
 // それ以外
}
326Name_Not_Found:2008/05/02(金) 15:45:00 ID:???
ん、手元のSafari3.1は if (document.all) はfalse判定のようだが。

Firefoxでは、if (document.all)はfalseだが、Boolean(document.all)はtrueとな。
327Name_Not_Found:2008/05/02(金) 16:19:52 ID:???
>>326
うそつき
328Name_Not_Found:2008/05/02(金) 16:43:00 ID:???
329Name_Not_Found:2008/05/02(金) 17:00:02 ID:???
そもそもIEかどうかを判定して動作を変えようと思うのが間違ってる
オブジェクト、メソッドの有無とかで動作を変えるべき
330Name_Not_Found:2008/05/02(金) 17:03:54 ID:???
>>328
条件コンパイルの利点を全て殺す最悪の例
331Name_Not_Found:2008/05/02(金) 17:29:09 ID:???
>>330
詳しく教えてほしいです
332Name_Not_Found:2008/05/02(金) 17:31:42 ID:???
せっかくだから聞くけど、ブラウザの判定で最良の方法は?
333Name_Not_Found:2008/05/02(金) 17:40:59 ID:???
>>332
洩れも>>329に賛成。document.styleSheetsを操作したいのなら
if(document.styleSheets)で判定する、とかいうふうに使う。
そうすればそれが次のバージョンでなくなってもそこを通らなく
なるからエラーはまぬがれるし。
334Name_Not_Found:2008/05/02(金) 18:08:58 ID:???
いや。>>329はそれで正しい振り分けができた時代があったから
間違いとはいえない。今になってみれば、ということだろ。
それはコードを書く人間のレベルが低すぎるという苺に尽きる。
335Name_Not_Found:2008/05/02(金) 19:30:18 ID:???
>>327
スマソ、Firefoxは恐らくレンダリングモードによって変わることを今発見した。
336Name_Not_Found:2008/05/02(金) 22:03:46 ID:???
>>335
レンダリングモードって標準モード、互換モードってやつかい?
互換モードだとサポートしてるってことでよいかな。
337Name_Not_Found:2008/05/02(金) 22:22:24 ID:???
>>333 >>335
プロパティで判別が基本だとしても、
どうしてもブラウザで判定しないといけないこともある。(opacityとか)

とりあえず、>>12にある有名なフレームワークで比較しようか。長文すまそ。

Prototype.js
IE: !!(window.attachEvent && !window.opera),
Opera: !!window.opera,
WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)

jQuery
safari: /webkit/.test( userAgent ),
opera: /opera/.test( userAgent ),
msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )

Yahoo UI
このライブラリは、複数のユーティリティの集合だけど、
個々のユーティリティがそれぞれで判断していた模様。
でも今はなるべくYAHOO.env.uaってのを使おうとしているっぽい。
で、そのYAHOO.env.uaは、navigator.userAgentを正規表現で判定。

Mootools
if (window.ActiveXObject) window.ie = window[window.XMLHttpRequest ? 'ie7' : 'ie6'] = true;
else if (document.childNodes && !document.all && !navigator.taintEnabled) window.webkit = window[window.xpath ? 'webkit420' : 'webkit419'] = true;
else if (document.getBoxObjectFor != null) window.gecko = true;
338337:2008/05/02(金) 22:38:54 ID:???
で、自分の意見。

なるべく、ユーザ申告を信じるライブラリが多いようですね(YUI、jQuery)。

Prototype.jsがプロパティ判別とnavigator.userAgentを混ぜて判別している理由はなぜだろう?

YahooUIは、各ユーティリティ側で細かいバージョンが必要なこともあるらしく、
 そのための情報を得る手段としてnavigator.userAgentをメインの判定として利用しているように見えた。

mootoolsだけが、navigator.userAgentを見ていませんが、その理由は、
それとも処理を軽くするために文字列判定を入れていないのか、
ユーザを信じる方針なのかよく分からなかった。
Note欄の「We dont sniff.」ってどういう意味か分かる方いますか?
339Name_Not_Found:2008/05/02(金) 22:46:35 ID:???
>>321
そんな所にもstyleSheetオブジェクトってぶら下がってたのね。
てっきり、document.styleSheetsにしかいないと思ってたよ。
340Name_Not_Found:2008/05/02(金) 23:23:43 ID:???
>>338
var Browser = new Hash({
Engine: {name: 'unknown', version: ''},
Platform: {name: (navigator.platform.match(/mac|win|linux|nix/i) || ['other'])[0].toLowerCase()},
Features: {xhr: !!(window.XMLHttpRequest), xpath: !!(document.evaluate), air: !!(window.runtime)}
});
if (window.opera) Browser.Engine.name = 'presto';
else if (window.ActiveXObject) Browser.Engine = {name: 'trident', version: (Browser.Features.xhr) ? 5 : 4};
else if (!navigator.taintEnabled) Browser.Engine = {name: 'webkit', version: (Browser.Features.xpath) ? 420 : 419};
else if (document.getBoxObjectFor != null) Browser.Engine.name = 'gecko';

Mootools1.12β2ではこのようになっているから、
UA名での判定は完全に捨てて、それぞれのレンダリングエンジン毎に特徴のある機能を元に判定を行う方針の模様。
識別名としてIEやFirefoxでは無く、tridentやgeckoのようなエンジン名を使っているぐらいだしね。
「We dont sniff」は、判定はオブジェクトのチェックだけで行い、その他のチェックは一々やらないぐらいの意味では。
341Name_Not_Found:2008/05/03(土) 00:11:47 ID:???
>>338
それは感想であって意見じゃないだろw
結局自分ではどれがいいと思うのさ
342Name_Not_Found:2008/05/03(土) 00:31:22 ID:???
>>336
うん。Firefoxは後方互換モードだと、document.allが存在する(使える)が、
if (document.all) は false で、
Boolean(document.all) は true で、
typeof(document.all) は 'undefined' で、
if (document.all instanceof Object) は true みたいよどうやら。
343Name_Not_Found:2008/05/03(土) 00:49:41 ID:???
>>341
レンダリングエンジンの特徴で判別!なんてマニアで甘美な響き。
すごくモットー(mootools)を感じる。
やっぱり、UAなんて不安定なものを使うなんて信じられないしね。
でも、tridentなんて名前を知っている人はココには結構いるかもしれないけど、現場ではおそらく少ない。
なので、mootoolsのようなオブジェクトベースの判定をしつつ、プロパティ名は
IEとかFFとかSafariとかがいいと思ってるよ。
344Name_Not_Found:2008/05/03(土) 01:00:57 ID:???
>>342
なんか、すごい後方互換モードだな。
そんなプロパティがあるんだかないんだかよく分からないのは、
IEのwindowオブジェクトだけかと思ってたよw
if (document.all) は falseなのは
>>323みたいなユーザを考慮してるのか。
345Name_Not_Found:2008/05/03(土) 05:36:07 ID:SjtB5wcI
今更だけど...
ここ見てると新しい発見がある !
今まで いろいろ学ばせてもらいます他 (感謝)
346Name_Not_Found:2008/05/03(土) 10:20:49 ID:???
たとえばどんなこと?
347Name_Not_Found:2008/05/03(土) 10:35:49 ID:???
正直、FFxでdocument.allが存在していても
if(document.all)がfalseに枝分かれするというのは
知らんかった。普段そういうコード書かないから。
348Name_Not_Found:2008/05/03(土) 12:56:11 ID:SjtB5wcI
>>346
WaMCom(Mozilla 1.31相等) で
confirm(document.styleSheets.length);
とやったら きちんとした結果が返って来た.
正直, 涙腺がゆるんでしまった.

なぜって 2003年が最終 update の代物なのに...
349Name_Not_Found:2008/05/03(土) 16:18:52 ID:???
xmlhttpでutf-8以外のページをロードすると文字化けしますが
これはecl.jsを使えば回避できるんでしょうか?
350Name_Not_Found:2008/05/03(土) 17:08:48 ID:trMn5YpK
自分のJavaScriptがどれくらいのレベルか試してみたいのですが、
何か問題を出していただけませんか。
351Name_Not_Found:2008/05/03(土) 17:11:50 ID:???
>>349
AJAXリクエストに対するサーバーからのレスポンスヘッダで、
Content-Type: text/html; charset=Shift-JIS
のように文字コードを指定すれば、現在の多くのブラウザでは問題無く処理されるはずだけど。
352Name_Not_Found:2008/05/03(土) 17:20:08 ID:???
>>350
FireFoxのArray.prototype.filterと同等の関数を作成してみて。
353Name_Not_Found:2008/05/03(土) 17:20:29 ID:emON9KxP
2パターン置換したいときに、
xxx.replace(/%E3%80%80/g, "+").replace(/%22/g, "");
でちゃんと動いたんだけど、replaceを2個並べる以外に賢い記述方法ある?
354350:2008/05/03(土) 17:28:45 ID:trMn5YpK
はい。(/%E3%80%80|%22/g,"")とやればよいと思います。
これで何級程度でしょうか。僕はできる方ですか?
355Name_Not_Found:2008/05/03(土) 17:30:50 ID:???
えっと、
%E3%80%80は "+"に、
%22は ""にしてください。
356Name_Not_Found:2008/05/03(土) 17:33:39 ID:YbvTmraf
ワロタ
357349:2008/05/03(土) 18:22:05 ID:???
>>351
responseTextで取得したのが化けている場合は
サーバ側のcharset指定がおかしいということですか?

htaで第三者のサーバのファイルを取得したいので
ヘッダはいじれないです。

この場合の対処方法は何かありますか?

ADODB.Stream使えば文字コード変換できることは確認できたんですが
レジストリをいじるのでできれば避けたいです。
358Name_Not_Found:2008/05/03(土) 19:20:43 ID:???
>>357
//低スキル回答者を相手にしておちょくってるだろw

responseBody, nodeTypedValueなら使ったことがあるっつうか、数日前にも仕事上のデータ処理で使った。
MSXMLのnodeTypedValueのヘルプページに例示があるが、そのまま。
出来上がるバイト列をUTF-8に変換した。
エンコードを変換するスクリプトは自分で書いた。
たしか、このスレにも数年前にShift_JISからUTF-8に変換するものを貼ったが、出来自体は良くない。
俺にとってはShift_JISとEUC-JPだけで十分だから自分で書く気になるが、あらゆる変換を書くとしたら、アホらしゅうてやっとれんわなw

もう気付いていると思うが、これの欠点は、変換前後双方のエンコーディングを知っておかなければならないこと。
変換後は知っていて当然だが、返還前が任意のURIからのレスポンスだったら、スニッフするのが面倒臭い。

まあ、バイト列に%を挿んで、そのecl.jsをうまく使えば、意外とあっさり出来そうではあるな。

逆に、ADODBがレジストリどうこう、という発言について詳しくデメリットを聞きたい。
数十万レコードのCSV自動処理用でADODBを毎日使ってるが、俺は何かとんでもない不作法をやらかしてるのか?w
359Name_Not_Found:2008/05/03(土) 19:43:03 ID:???
ぢおんてst
360Name_Not_Found:2008/05/03(土) 19:45:19 ID:???
うぇるかm きせ烏賊い所
361Name_Not_Found:2008/05/03(土) 19:59:45 ID:???
おれは、XMLHttpRequestでデータを取得した場合に、
サーバからUTF-8で返却されない場合は、
JS側のどこかで変換をかける必要があると思ってる。
(XMLHttpRequestが内部で変換してくれる機能がないため)

普通のネット上で公開するHPでやる場合は、JS側で変換テーブルを作ってやってる。
(ecl.jsを使えばテーブルを自作する必要はなさそうだね。)
362Name_Not_Found:2008/05/03(土) 20:12:17 ID:???
>>358
ADODB.Streamってブラウザからの利用だとセキュリティにひっかかって、
通常だと使えないから、使えるようにするためにレジストリをいじるってことを言ってるんじゃないの。
363Name_Not_Found:2008/05/03(土) 21:08:36 ID:???
>>358 >>361
マジレス/釣り/煽りなのか判らんけれど。
(いつものアホな>>21>>196あたりによる暇つぶしだろうと予想)

ttp://www.w3.org/TR/XMLHttpRequest/
>Return the result of decoding the response entity body using charset.
要するにresponseTextは、
1. Content-Typeでcharsetが指定されていればその文字コード、
2. 指定されていなければUTF-32,16,8のいずれかであるとして判定を行う、
3. それでも不明であるならUTF-8とする。
4. 上記で確定した文字コードでresponseTextのデコードを行う。
364Name_Not_Found:2008/05/03(土) 22:26:19 ID:OiyLLZwl
質問お願いします。
--
フォームのname:aaa
部品のname:bbb
--
↑でオブジェクトを指定する際に
document.aaa.bbbと記述すると思いますが、
bbbの部分を変数で指定するようなことは可能なのでしょうか?

ccc = "bbb";
document.aaa.ccc

↑これでは出来なかったのですが、これと同じようなことができるなら教えてくださいm(__)m
365Name_Not_Found:2008/05/03(土) 22:36:27 ID:???
テンプレ FAQ 読めばいいと思うよ
366Name_Not_Found:2008/05/03(土) 22:37:58 ID:???
>>364
FAQ>>3のQ8/A8。だがFAQを読めない奴には2度と来て欲しくないな。
367Name_Not_Found:2008/05/03(土) 22:39:43 ID:???
>>364
そんな書き方をどこで覚えたの?当てずっぽうにあっちこっちやって
もムリだよ。ちゃんと勉強した方がいいと思う。そうすると覚えるし。
余談だけど、「質問お願いします。」 っておかしいよね。
368Name_Not_Found:2008/05/04(日) 00:15:29 ID:???
>>357
charset指定がおかしいのでは無く大抵はcharsetが未指定(なのでUTF-8扱い>>363)。

>>364
document.aaa[ccc]

>>365-367
http://life9.2ch.net/test/read.cgi/utu/1209564409/
369Name_Not_Found:2008/05/04(日) 11:42:16 ID:???
document.aaa[ccc](笑)
370Name_Not_Found:2008/05/04(日) 12:32:25 ID:???
(爆)。これで>>368の言ってることの信憑性は全部吹っ飛んだな。
371Name_Not_Found:2008/05/04(日) 12:33:24 ID:???
>>368
巣にお帰り下さい
372Name_Not_Found:2008/05/04(日) 14:32:37 ID:???
     < ̄`ヽ、       / ̄>
        ゝ、  \ /⌒ヽ,ノ  /´
           ゝ、 `( ´・ω・)/ 371のバーカ!
             >     ,ノ  
            ∠_,,,/´””
373Name_Not_Found:2008/05/04(日) 16:11:02 ID:???
かわいいなw
374Name_Not_Found:2008/05/04(日) 17:06:41 ID:???
羽の先がずれてるのが残念
375Name_Not_Found:2008/05/04(日) 20:15:43 ID:???
>>369-374
このスレも他の2chスレと同様にアホ満載なGWっぽい展開だね。

>>353
2パターンぐらいならreplace2つでも別に良いのではと思うけど。
変換候補が多いなら、
var repl = {'%E3%80%80':'+','%22':''};
var keyArray = [];
for ( var prop in repl )
keyArray.push( prop.replace(/([.?*+\-^$\\|!=\(\)\[\]{}])/g,'\\$1') );
var orgStr = '%E3%80%80%a2%22%E3%80%80%0a%0d%22';
var newStr = (keyArray.length>0 ? orgStr.replace( new RegExp('('+keyArray.join('|')+')','g'), function(str) {return (repl[str]!=undefined?repl[str]:str)} ) : orgStr);
とか。
376Name_Not_Found:2008/05/04(日) 23:43:12 ID:???
>>363
ちなみに、IE6はXMLHttpRequestを持ってないから代わりに
ActiveXObject使うと思うけど、そいつも対応してるかどうか
ご存知でしょうか?
377Name_Not_Found:2008/05/05(月) 00:18:33 ID:???
クリップボードの内容をJavaScriptで取得しようとすると
警告が出てしまいます。
しかし、なんとか利用者に気づかれないまま、
盗み取りたいと考えています。
何か良い案がありませんでしょうか?(不要な煽りは止めてね)

今考えている案としては、
Dijit.Textareaのようなものを作ったと言って公開する→
誰かがブラウザ上でコピー&ペーストする→
でも実はコピーしても書き換わっておらずかつ貼り付け内容はOSクリップボードってパターンです。
378Name_Not_Found:2008/05/05(月) 00:24:13 ID:???
>>377
ActiveXおすすめ。

Microsoftの書名つけとけば、たいていいけるよ。
379Name_Not_Found:2008/05/05(月) 00:48:31 ID:???
>>369-374
とりあえず、document.aaa[ccc]でも動くジャン。
記述量を少なくすることが重要な場合、その書き方でよいと思ったが、何か悪い点があるの?
380Name_Not_Found:2008/05/05(月) 00:56:16 ID:???
>>379
動いた?おめでと。だからなんなの。動くだけでいいんならいくつでも
invalidな例を書いてもいいけど、もう寝るわ。
381Name_Not_Found:2008/05/05(月) 00:58:25 ID:???
>>380
invalidな例でよいので短く書きたいと考えています。
382Name_Not_Found:2008/05/05(月) 01:57:07 ID:???
>>378
それは良い案ですね。ActiveXコントロールをインストールさせる方法。
M$の署名にしておくってことですね。
ですが、ここはJavaScriptのスレなので、JavaScriptで何とかしたいと思っています。
特に今現在、狙い目だと考えているのが、最近のブラウザで実装され始めた
onbeforecopyやoncopyなどです。
そのタイミングで範囲選択をうまく制御したり、focusを移動させたりすれば
実はなんとかなるんじゃないかと思っています。
383Name_Not_Found:2008/05/05(月) 02:11:10 ID:???
>>380
本当にinvalidなら全く機能しないはずなので、
とりあえず現状の多くのブラウザで機能するならdeprecated。

自分の書いたコードを批判されるのが怖いからか、
煽るだけのチキン(このスレ的には"常連"だっけか?)ばかりなので、
とりあえず"invalid"で良いから>>353に対する一例を出して欲しいね。
384Name_Not_Found:2008/05/05(月) 10:09:15 ID:???
>>382
何とかなることが分かったとたんにそれはセキュリティホール
と認定されて潰されると思われ。(だからどっちかといえば
何ともならない可能性が高いと思うな。)
385Name_Not_Found:2008/05/05(月) 11:04:31 ID:???
>>384
そう考えるのが普通だとは思っています。
では、なぜ>>378のような案が出てくるのでしょうか?これを防げばよいはずですよね?
当然、綺麗に盗める場合は防がれてしまうでしょう。(かつてのclipboardDataのように)

目指したい「何とかなる」内容としては、
一定の問題点が存在したとしても
「クリップボード警告よりユーザに意識をさせない」レベルで取れてしまう方法です。
(”一定の問題点”とは、上記ActiveXの場合は、
 インストールするかどうかをユーザが選択しないといけないという問題がある)
386Name_Not_Found:2008/05/05(月) 11:15:03 ID:???
洩れの感想ではヴェンダ側の連中はSHについては良くわかっていると思う。
世界中からのフィードバックも受けてるからね。すべての脆弱性について
改善するよりは悪用される可能性のある優先順位で当面のパッチを当てて
いるはず。したがってそういう悪性のあるいは無意識下でユーザのPCか
ら盗み出す手法は顕在化した時点で潰される可能性が大。長期にわたって
そのトラップを維持するのはまず無理でマルチ商法のようにやるなら最初
にサッとやって収穫を確定することだ。だが、>>1.の・ユーザーに迷惑と
なるスクリプトを書く者にアドバイスすること自体このスレのモットーに
反している。
387Name_Not_Found:2008/05/05(月) 11:57:02 ID:???
同感。なので >>385 にはお帰りいただきたいね。ここではこれ以上
何も得られないと思うよ。(アホなActiveXを騙して入れさせるという
のが唯一の解だろうが、もちろんダイアログは出るに決まってる。)
388Name_Not_Found:2008/05/05(月) 12:16:44 ID:???
>>386-387
スレ趣旨とは異なっていたのですね。それはすみませんでした。
389Name_Not_Found:2008/05/05(月) 13:25:18 ID:???
まあ「ユーザーに迷惑となるスクリプト」を顕在化させて、ベンダ側に対策を
促す、って感じでなら、その方法を非具体的に明らかにするのは良いのでは?

「クロサギ」みたいに手法を世間に流布するのは、そんなに悪い事ではないで
しょ。
390Name_Not_Found:2008/05/05(月) 13:39:13 ID:???
技術的に探求するのは別に構わないと思うけど、上に書いたような
わけで穴はそう簡単には見つからない気がするね。
391Name_Not_Found:2008/05/05(月) 15:05:03 ID:???
>>389
正論だけどそれを語るのにここよりもふさわしい場所があるんじゃないか。
セキュ板とかBugtraqとか。
392Name_Not_Found:2008/05/05(月) 17:30:24 ID:???
>>375
ありがとうございます!
今の知識ではちんぷんかんぷん。
393Name_Not_Found:2008/05/05(月) 22:42:00 ID:???
すいません。
input要素のファイル選択タイプのvalueプロパティが書き換えられないのは仕様でしょうか?
valueでは読み込みしかできないようなんです。
value = "○○" はどうも無視されるようなんですが。。。
394Name_Not_Found:2008/05/05(月) 22:45:20 ID:???
>>393
出来ない。>>8のFAQ参照。
395Name_Not_Found:2008/05/05(月) 22:47:58 ID:???
input type="file" ならセキュリティ上問題になるからできんよ
396Name_Not_Found:2008/05/05(月) 22:58:22 ID:???
>>394-395
ありがとうございました!
397Name_Not_Found:2008/05/05(月) 23:01:29 ID:???
FAQもいいとこ
398Name_Not_Found:2008/05/05(月) 23:06:20 ID:???
やはりFAQ追加は正解だったみたいだな
399Name_Not_Found:2008/05/06(火) 14:42:23 ID:unmLFKfL
こんにちは。画像が10枚ほどあるのですがプリロードは必要ですか。
あとどんなときにプリロードするのでしょうか。重いといっても軽い
のですが。
400Name_Not_Found:2008/05/06(火) 14:54:30 ID:???
すいません教えてください。
JAVA(TM)6 Update2
JAVA(TM)6 Update3
JAVA(TM)6 Update5ってあるんですけど、サイズでかいんで
削除して1つにしていいんですか?
401Name_Not_Found:2008/05/06(火) 15:27:26 ID:???
      ィ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;゙t,
     彡;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ヽ
     イ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r''ソ~ヾ:;;;;;;゙i,
     t;;;;;;;リ~`゙ヾ、;;;;;;;;;;;;;;;;;;;;ノ    i,;;;;;;!
     ゙i,;;;;t    ヾ-‐''"~´_,,.ィ"゙  ヾ;;f^!   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     ト.;;;;;》  =ニー-彡ニ''"~´,,...,,.  レ')l. < おまえは何を言っているんだ
     t゙ヾ;l   __,, .. ,,_   ,.テ:ro=r''"゙ !.f'l.   \____________
      ヽ.ヽ ー=rtσフ= ;  ('"^'=''′  リノ  
    ,,.. -‐ゝ.>、 `゙゙゙゙´ ,'  ヽ   . : :! /
 ~´ : : : : : `ヽ:.    ,rf :. . :.: j 、 . : : ト、.、
 : : : : : : : : : : ヽ、  /. .゙ー:、_,.r'゙: :ヽ. : :/ ヽ\、 
  :f: r: : : : : : : : !丶  r-、=一=''チ^  ,/   !:: : :`丶、_
  : /: : : : : : : : :! ヽ、  ゙ ''' ''¨´  /   ,i: : : l!: : : : :`ヽ、
 〃: :j: : : : : : : ゙i   `ヽ、..,,__,, :ィ"::   ,ノ:: : : : : : : : : : : :\
 ノ: : : : : : : : : : :丶   : : ::::::::: : : :   /: : : : : : : : : : : : : : : :\
402Name_Not_Found:2008/05/06(火) 16:10:30 ID:???
>>400
アホ。完全にスレチだぞ。

http://java.com/ja/download/faq/5000070400.xml
403Name_Not_Found:2008/05/06(火) 17:29:01 ID:1/SIu4Qz
オンマウス時に文字を変更するというのはどうすればいいのですか?
調べても画像変更しかなくて・・・。

404Name_Not_Found:2008/05/06(火) 17:42:18 ID:???
>>403
マジ?約 8,970 件もヒットしたけどな。
405403:2008/05/06(火) 18:55:08 ID:1/SIu4Qz
>>404
ヒットはするけど内容は¥文字色を変える等だったけど?
できればどのサイトでもいいからURLを書いてください。
406Name_Not_Found:2008/05/06(火) 19:14:12 ID:???
407403:2008/05/06(火) 19:33:25 ID:1/SIu4Qz
>>406
有り難う!!
408Name_Not_Found:2008/05/06(火) 20:48:14 ID:???
>>406
あなたが策士か。
409400:2008/05/06(火) 21:42:45 ID:???
>>402
助かりました。ありがとう
410Name_Not_Found:2008/05/06(火) 23:10:42 ID:???
ネタか?GWも終わりだしそろそろマトモな人間が帰京するだろ。
それにしても「ありがとう」というのは傲慢な言い方だね。人に
何がしか教えてもらったら「ありがとうございました」だろ。
411Name_Not_Found:2008/05/06(火) 23:21:05 ID:???
>>380のinvalid君は予想通り逃亡か。
代わりに馬鹿の同類っぽい>>410さんお願いします。
412Name_Not_Found:2008/05/06(火) 23:21:31 ID:???
>>399
最初に画像を入れ替えたときにさっと変わらないので
イライラするようならプリロードするんでしょうね。そういう問題が
見ている人にとって起きないのならわざわざ複雑にする必要なし。
413Name_Not_Found:2008/05/07(水) 00:07:21 ID:???
>>410
JSは終わって1年以上経過している。マトモな人間はASに流れて超多忙だよ。
414Name_Not_Found:2008/05/07(水) 00:20:21 ID:???
>>413
(ボクのばやい)JSは終わって1年以上経過している。
415Name_Not_Found:2008/05/07(水) 00:34:45 ID:???
>>413
馬鹿が遂に自演を始めるようになったか。
416Name_Not_Found:2008/05/07(水) 01:17:43 ID:???
洩れは>>410でも>>380でもないけど、やっぱり
document.forms.フォーム名.elements.部品名.value
と書くことを勧めるし自分でもそうするね。理由としては
「document.フォーム名.部品名.value」だと(1)標準に
書かれてない機能は将来的に/ブラウザによって保証され
ないかもしれない、(2)標準のプロパティ名との衝突の危険、
(3)コードとしての読みやすさを損なう、かな。
417Name_Not_Found:2008/05/07(水) 01:47:15 ID:???
さて。
418Name_Not_Found:2008/05/07(水) 04:14:34 ID:???
1.これは問題にならんと確信してるなあ
今更下位互換切る根性があるブラウザがあるかなあ。PDA方面とか?
放置サイトの情報量も無視できないし。
今ん所その利点はベンダ自体にはなさげな気が。

2.これは同意。衝突する可能性ありありだしなー。

3.これはどうだろ。。w3c非推奨な書き方ではなくとも、読み易くないかどうかで言うと意見別れるんじゃねえか。

- - -

ところでこの場合でgetElementById("フォームや要素のID")を薦めない理由はなに
419Name_Not_Found:2008/05/07(水) 05:27:45 ID:???
>>418
今後3,4年ならまだ多くのブラウザでサポートされるだろうけど、
廃止される予定の仕様を今現在わざわざ使う理由も無いと思うね。

getElementByIdでは、全てのエレメントが対象であり、
戻り値のオブジェクトがHTMLFormElementである保証も無いが、
document.formsの場合には、フォームエレメントだけを対象とし、
当然戻り値もHTMLFormElementであると期待出来るから。
では?

しかし>>364は単にJavaScript文法の質問(変数に格納した文字列をプロパティ名として使用する方法)だったようだけど、
流れが生産的な方向に脱線するのも面白いね。
420Name_Not_Found:2008/05/07(水) 08:01:29 ID:???
オブジェクトが多数存在する場合
getElementByIdとdocument.formsでは
document.formsの方が良いってことかね?
421Name_Not_Found:2008/05/07(水) 08:02:39 ID:???
>>418
洩れは
○質問者が「document.フォーム名.部品名.value」を使って
いる場合はdocument.forms.フォーム名.elements.部品名.value
を紹介し、
○それ以外の場合はdocument.getElementsById()を紹介
しているなー。特定要素を参照する方法をまだ知らない人に教える
のなら覚えることが1つで済む方法の方がいいかなと思って。
422Name_Not_Found:2008/05/07(水) 12:29:04 ID:???
JSの能力をもっと上げるために何をすべきですか?
423Name_Not_Found:2008/05/07(水) 12:36:33 ID:???
>>422
シムシティで遊ぶ
424Name_Not_Found:2008/05/07(水) 12:41:15 ID:???
>>422
今自分にできることを挙げてみて。
425Name_Not_Found:2008/05/07(水) 12:47:37 ID:???
>>422
過去スレ全集を見ながら出て来た質問の回答例を全部書いて
みる。実際に出された回答と比べて自分より優れているものは
取り入れる。これ最強。
426422:2008/05/07(水) 14:51:36 ID:thVr5nk5
423〜425さん。
ありがとうございます。425さんのアドバイスは100年かかってもできそう
にありません。参考書を読むのもやっとな状態です。地道に取り組んで行き
たいと思います。親身なご回答ありがとうございました。
(前回ageずに質問してしまいました。申し訳ありません)
427Name_Not_Found:2008/05/07(水) 16:38:55 ID:???
どこかに予約語の一覧はございませんでしょうか。
428Name_Not_Found:2008/05/07(水) 17:04:32 ID:???
ネットにございます。ググりもしなかった?
429Name_Not_Found:2008/05/07(水) 17:18:01 ID:???
430Name_Not_Found:2008/05/07(水) 18:20:16 ID:RC3gAfrK
>>425
そのアイディアいただき !
(根気が続くかどうかが最大の問題)
431Name_Not_Found:2008/05/07(水) 18:32:02 ID:???
>>425
今からこれをやろうとしてるそこの君!

1問ずつ質問と回答を抽出もしくは別解したのを掲載して
1サイト立ち上げてくれたらおじさん泣いて喜んじゃうぞ!
432Name_Not_Found:2008/05/07(水) 19:58:34 ID:RC3gAfrK
"過去スレ" の初期の部分(2000年) に目を通してみると...
う〜ん, window.open(), frame 関連... 時代の流れを強く感じます.
すべて完全に拾い上げてサンプル化するのは現実的ではなさそう.
結局, 独断と偏見で取捨選択せざるを得ない...
433Name_Not_Found:2008/05/07(水) 20:12:30 ID:???
そんなことよりひたすら良い回答をキボン
最近document.allに就いて交わされた議論からわかるように昔の
なんか掘り出しても今は環境がちがう。openspecのサイトと同
じで有害でこそあれ使いものにならないですぜ、旦那。
434Name_Not_Found:2008/05/07(水) 20:15:31 ID:???
あとトホホもね。
435Name_Not_Found:2008/05/07(水) 20:25:23 ID:RC3gAfrK
DOM 1 についての回答が (すでに) ちらほら.
まったく無意味という訳でもなさそうだけど,
大部分はばっさり切り捨てなければならないだろう.
編集過程に個人的な偏見が入り込むのが最大の問題だろうなぁ.

しかし, 物作りが好きな人間に取っては興味深いテーマだ.
436Name_Not_Found:2008/05/07(水) 20:35:05 ID:???
とりあえずsageろ
437Name_Not_Found:2008/05/07(水) 20:46:33 ID:???
玉石混淆な過去スレを見るのも得るものはあるだろうけど、
>>12のいずれかのFrameworkのソースを読んだ方が、
より簡単に現状の環境で有効な手法が判るのでは。
438Name_Not_Found:2008/05/07(水) 21:16:17 ID:???
>>437
個人的に "手法" よりも "サンプル作り" に興味があるので,
よくある質問の頻度を調べるだけでも意味があると思ってます.
439Name_Not_Found:2008/05/07(水) 21:26:57 ID:???
そんな暇があったらFlexやれ。
いつまで終了言語のJSで遊んでんだよ、馬鹿かおまえら。
貧弱貧相なJSはJScriptで社内の色んな処理を書く以外には使途が無いと早く気付こうな。
440Name_Not_Found:2008/05/07(水) 21:32:19 ID:???
>>439
いつもの馬鹿はAdobe AIRも知らない様子。さすがだね。
441Name_Not_Found:2008/05/07(水) 21:37:35 ID:???
>>432
vol.1からやろうとするんじゃなくて
vol.63からある程度まで逆に辿っていけばいいんじゃない?
442Name_Not_Found:2008/05/07(水) 21:50:13 ID:???
JS終わった君 乙
443Name_Not_Found:2008/05/07(水) 21:53:30 ID:???
>>438
誰の為にサンプルを作っているのかは知らないが、本末転倒のような気も。
まあどこかのスレでのように、指摘されて発狂するような事にならないように頑張っておくれ。
444Name_Not_Found:2008/05/07(水) 22:44:56 ID:???
>>441
スレの中で2割がかろうじて質問だとして1000 * 0.2 = 200 ね、
vol63からさかのぼったとしてまあどんな奴でもvol58くらいで空しさ
に堪えかねるだろうな。
445Name_Not_Found:2008/05/07(水) 23:06:33 ID:???
Prototype.jsはイベント設定時に
element._eventIDをくっつけていますが、
この方式で何を実現したいのか分かりませんでした。
利点と欠点が分かる方教えてください。
どうでもいいけど、getEventIDを見るに、
eventIdというよりむしろelementIdだと感じています。
446Name_Not_Found:2008/05/07(水) 23:16:01 ID:???
Arrayどうかを知りたい場合(でもargumentsやnodeListは弾きたい)
・arr instanceof Array
・arr.constructor == Array
どちらを使用されていますか?

YahooUIなどでも、1つのソースに上記の2つのパターンが混じっていました。
447Name_Not_Found:2008/05/07(水) 23:34:38 ID:???
firefox3でfirebugは使えていますか?
DOMインスペクタは動きますが、breakpointがなぜか効きません。1.2 alphaですが。。
448Name_Not_Found:2008/05/08(木) 02:29:36 ID:???
>>446
Arrayの場合は[]でもnew Array()でもどちらもtrueだけど、
var testStr = new String( 'foo' );
alert( testStr instanceof String ); // true
testStr = 'bar';
alert( testStr instanceof String ); // false
となるので、記述の統一という意味で形判定にはconstructorを使っているね。
449Name_Not_Found:2008/05/08(木) 03:05:55 ID:???
流れぶった切って申し訳ないです.
これ以降 ROM 專に戻りますので許してつかぁさい.

>>441
なるほど... 参考にさせていただきます.

>>443
遠い昔, サンプルを漁ったことがあります.
長ったらしい説明の後の肝心のサンプルは動作不良なんてのがほとんど.
"まずは動作確認が先でしょ ? " と強く思ったものでした.
きちんと動作するサンプルって意外に少なかったり...

>指摘されて発狂するような事にならないように
う〜ん, あれは指摘されたのではなく, 指摘したんですが...
(だけど,そのように見えるのなら あえて弁解するつもりはありません)
450Name_Not_Found:2008/05/08(木) 05:38:21 ID:???
既出だったらすまん。
他人のコード見てたら、変数に関数ぶっこんでるのが結構あるんだが、
俺的にはfunctionで始まらない関数は、すごい違和感を感じる。
こういう使い方ってJavaScript的になんかメリットあるの?
451Name_Not_Found:2008/05/08(木) 08:19:04 ID:???
>>450
あんたの違和感のために言語が設計されているわけじゃ
ないから。具体的にどういうコードはどう書いた方が
「違和感」なくていいと思うのか貼ってみてよ。
>>448
「文字列オブジェクト」と「文字列値」は別ものなんだが。
それを一緒という判定にしたいのならそうするんだろうけどね。
452Name_Not_Found:2008/05/08(木) 08:52:56 ID:???
>>450
無名関数を知らないだけでは?
453Name_Not_Found:2008/05/08(木) 10:38:04 ID:???
>>452
それだ!ありがとう!ちょっと勉強してみる。

>>451
違和感あるから「悪い」、とは言ってない。
自分の持ってる知識が古すぎ&独学で、関数はfunctionで始まるもの、
としか認識してなかった。
自分が知らないことでも、なにかメリットがあるなら、取り入れたいと思ってた。
ただ、無名関数って単語すら知らんかったから、ググりようも無かった。
454Name_Not_Found:2008/05/08(木) 11:30:41 ID:???
がんがれ
その辺慣れたら、JavaScriptの柔軟さとお手軽さを一層楽しめるようになるですよ
455Name_Not_Found:2008/05/08(木) 14:53:47 ID:???
SELECTの任意の項目を選択させる場合って、
document.forms[0].hoge.options[0].selected = true;
しか方法ないのでしょうか?
options[0]のような位置指定ではなく、VALUEの中身を検索して
見つかったら選択のような処理がしたいのですが。
456Name_Not_Found:2008/05/08(木) 14:55:43 ID:???
>>455
valueの中身をループしながら調べるしかないね。
457Name_Not_Found:2008/05/08(木) 15:09:22 ID:???
と、いうことはOPTIONのVALUEを調べて位置を割り出すことは可能ですか?
458Name_Not_Found:2008/05/08(木) 15:23:42 ID:???
あ、わかりました。

for(i=0;i<MAX;i++){

if(document.forms[0].hoge.options[i].value == "are"){
index = i;
}
}

こうですか?ちょっとやってみます
459Name_Not_Found:2008/05/08(木) 16:47:49 ID:???
>>453
できるよ。
以上。
↓次の方どうぞ
460Name_Not_Found:2008/05/08(木) 16:51:18 ID:???
艶情事さーん、おばたせしました。先生が診てくださるそうですよ。
461Name_Not_Found:2008/05/08(木) 19:50:10 ID:???
>>446
オブジェクトのconstructorは書き換え可能だから
あんまりconstructorで判別しようとは思わないなぁ
462Name_Not_Found:2008/05/08(木) 20:58:10 ID:???
JavaScript1.1以下
  constructor 読み専
  instanceof なし
  isPrototypeOf() なし

JavaScript1.3以下
  instanceof なし
  isPrototypeOf() なし

こういう歴史を知っていれば、いまさらconstructorを使わないわな。
使われていたら、プロトタイプチェインを知りたいのではなく、目的は他にあるのだろう。
463Name_Not_Found:2008/05/09(金) 00:54:39 ID:???
sage
464Name_Not_Found:2008/05/09(金) 01:15:14 ID:???
それぞれのライブラリで出てくる回数。
constractorは比較のみ抽出されるように、「\.constructor[ \t]*[\!=]=」で検索
フォーマットはconstractor/instanceof/isPrototypeOf/typeof。

prototype 1.602 0/2/0/10
jQuery  1.2.3  20/0/0/19
YahooUI 2.5.1  34/175/0/169 (*-debug.jsのみ対象)
mootools 1.2b2  0/0/0/16
ExtJS   2.02  5/47/0/346 (もちろんsourceディレクトリのみ対象)
Dojo   1.1 8/197/0/622 (compressされたやつは除く。dojoxとdijit、utilは含む。面倒なのでtestsも含む)
465464:2008/05/09(金) 01:22:27 ID:???
で、自分の意見。

isPrototypeOfは誰も使ってないので、危険そうだ。
ほとんどはtypeofで済ませて、Array、RegExpはinstanceof。
constractorは早くしたい時に使うのがよさそうだ。
466Name_Not_Found:2008/05/09(金) 01:36:40 ID:???
>>445をよろしく。
prototype.jsのイベントモデルについて語りませんか?
467Name_Not_Found:2008/05/09(金) 02:42:58 ID:???
>>445
Event.cacheからelementに追加されたハンドラを検索するためのキーのようだね。
だめ?ざっとコード読むだけでは解らんような思想とかが知りたいのかな?
468Name_Not_Found:2008/05/09(金) 04:04:35 ID:???
あほらしいと言えばあほらしいメモリリーク対策
469Name_Not_Found:2008/05/09(金) 08:19:00 ID:???
>>467
あんまりコードもじっくりは見てないよ。で、今見てみると、
element._eventIDを割り振っている理由は、そのときのサーチを高速化するためだと思いましたが、
意識は合っていますか?
別に、element._eventIDを割り振らなくても、
elementに追加されたハンドラが何かは分かると思っています。

>>468
それは、Event.cacheを持てば実現できることであって、
elementに_eventIDを割り振らなくても実現出来ると思っています。
470Name_Not_Found:2008/05/09(金) 09:00:42 ID:???
余談でかつ拘る積りもないが、
× prototype.js
○ Prototype.js
471Name_Not_Found:2008/05/09(金) 09:37:55 ID:???
>>470
えと・・・
472Name_Not_Found:2008/05/09(金) 13:48:59 ID:???
JavaScriptで信長の命日(本能寺の変)を求めたら水曜日って出たんですが、
これあってますか?シーザーの暗殺された日の曜日も求めたいのですが。
473Name_Not_Found:2008/05/09(金) 13:58:57 ID:???
>>472
歴史板に池。
474472:2008/05/09(金) 14:14:18 ID:???
>>473
ご回答ありがとう御座います。歴史の話ではなくてJavaScriptのことな
んです。よろしくお願いします。
475Name_Not_Found:2008/05/09(金) 14:28:13 ID:???
>>474
歴史の話だっつーの。

本能寺の変が1582年6月21日だとすると西洋では月曜だが、日本に西洋の暦は入ってきてない。

シーザー暗殺のときにはグレゴリオ暦はない。
暗殺が紀元前44年3月15日だとしても、閏日が適当にはいってるんだから、それだけじゃ曜日なんてわからん。
となると、安息日なんかから割り出すわけになる。これは完全に歴史の範疇。
476Name_Not_Found:2008/05/09(金) 14:33:02 ID:???
>>472
スクリプトの正否を知りたいなら
そのスクリプトを貼らないとわからんでしょ
477Name_Not_Found:2008/05/09(金) 15:45:56 ID:???
>>475
計算してみた
本能寺の変があったのは天正10年6月2日だから、グレゴリオ暦になおすと1582年7月1日の木曜日
ユリウス暦だと西暦1582年6月21日の土曜日

じゃね?
478Name_Not_Found:2008/05/09(金) 16:24:10 ID:???
とまぁ、曜日なんてのは使ってる暦や計算方法でバラバラになるんだ。
それを1つに定めるのは歴史研究家じゃないとムリ。
479472:2008/05/09(金) 18:34:47 ID:???
473-478(特475,477)さん
そうなんですか。JavaScriptと暦って奥が深いですね。水曜日でも
ないのですか。もっと精進します。ありがとうございました。
みなさん、どうぞ良い週末を!
480Name_Not_Found:2008/05/09(金) 19:26:20 ID:???
>>479
欧米か
481Name_Not_Found:2008/05/09(金) 23:58:20 ID:???
>>469
> サーチを高速化するためだと思いましたが、
何と比べて高速化なのかわからんけど、配列を検索したりするよりは速いわねきっと。
482Name_Not_Found:2008/05/10(土) 00:38:44 ID:???
>>481
配列の検索です。

できれば、elementに_eventIDなどというプロパティは追加したくないと思っています。
ですが、
1.「IEのメモリーリーク対策」
2.「イベント削除の簡易化(要素のみ指定すれば、ひもずくハンドラを全て削除)」
の機能は欲しいと思っています。
で、2番を実施するにあたって、
必要以上にコストのかかる処理にならないようにしたいとも思っています。

elementに_eventIDを追加しない方法だと、配列になってしまうと考えています。

何とかelementに_eventIDを追加しない方法で上記を実現出来ないか、知恵はございませんか?
ブラウザによってはelementごとに独自のIDを割り振ったものがあったと思いますが、
上記機能を実現するにあたりその機能を使えると思いますか?
483Name_Not_Found:2008/05/10(土) 08:23:55 ID:???
>>482
IDは使わないで、エレメントオブジェクトをそのままキー
として表を作ることはできるんじゃないの。試してないけど、
var tbl = {};
...
if(!tbl[element]) tbl[element] = [];
tbl[element].push(handler);
みたいな…で、削除するときは
for(element in tbl) {
for(handler in tbl[element]) {
elementからhandlerを削除する;
}
}
484Name_Not_Found:2008/05/10(土) 10:00:12 ID:???
>>483
それだとキーは element.toString() になる
エレメントをキーにするやつは便利そうだからちょっと書いてみる
485Name_Not_Found:2008/05/10(土) 11:47:57 ID:???
1次元配列から、ハッシュと配列の組み合わせに変えれば多少早くはなるかも。
ハッシュのキーには、element.toStringした文字列だけではなく、
idとかclassNameとかも含めて、キーにする手があるけど、
documentやwindowオブジェクトだと無理だね。
486Name_Not_Found:2008/05/10(土) 20:44:21 ID:???
storage の一覧取得でコケて elements なんて作ってしまった
>>482 の 2 番だけならそうでもないけど、1 番は少し重いかも
どんどん突っ込んでくれるとありがたい

var Event = {
  storage: (function() {
    var elements = [];
    var f = function(element, handler) {
      var prev = f.now;
      if (element === undefined) return elements;
      if (handler === undefined) return prev(element);
      f.now = function(elem) {
        if (elem !== element) return prev(elem);
        var a = prev(elem) || [];
        a.push(handler);
        return a;
      };
      elements.push(element);
    };
    f.now = function() {
      return undefined;
    };
    return f;
  })(),
  observe: function(element, name, observer, useCapture) {
    useCapture = !!useCapture;
    if (element.addEventListener) {
      this.storage(element, [name, observer, useCapture]);
      element.addEventListener(name, observer, useCapture);
    } else if (element.attachEvent) {
      this.storage(element, [name, observer, useCapture]);
      element.attachEvent('on' + name, observer);
487Name_Not_Found:2008/05/10(土) 20:44:41 ID:???

    }
  },
  stopObserving: function(element, name, observer, useCapture) {
    useCapture = !!useCapture;
    if (element.removeEventListener) {
      element.removeEventListener(name, observer, useCapture);
    } else if (element.detachEvent) {
      try {
        element.detachEvent('on' + name, observer);
      } catch (e) {}
    }
  },
  destroyObservers: function(element) {
    var a = this.storage(element);
    if (!a) return;
    for (var i = 0, len = a.length; i < len; i++) {
      this.stopObserving.apply(Event, [element].concat(a[i]));
    }
  },
  destroyLeak: function() {
    var elements = this.storage();
    for (var i = 0, len = elements.length; i < len; i++) {
      Event.destroyObservers(elements[i]);
    }
  }
};
if (window.attachEvent) window.attachEvent('unload', Event.destroyLeak);
488Name_Not_Found:2008/05/10(土) 20:47:50 ID:???
こうだった
if (window.attachEvent) window.attachEvent('onunload', Event.destroyLeak);
                            ↑
489Name_Not_Found:2008/05/10(土) 20:47:51 ID:???
あるidをもつタグを選択状態にしたいのですがfocus()やselect()を
使ってもうまくできません。

function selectElem(id)
{
document.getElementById(id).focus();
document.getElementById(id).select();
}
↑できないです。

どうすればよいのでしょうか?

490Name_Not_Found:2008/05/10(土) 21:57:56 ID:???
>>482
uniqueID のことなら、IEのシェア分だけカバーできちゃうから、非常に有効な手段だな。
特に、要素オブジェクト周りのリークはIEの話なわけだから、
他のブラウザ用には、遠慮ないコードを書けばいい。

>>486
Eventだのelementだのと、ホストオブジェクト名を我が物にするのが好きなんだな。
そういうのがどうでもいいと思えるほどの上級者なんて、俺を入れて世界に10人くらいしかいないぞ。
491Name_Not_Found:2008/05/10(土) 22:14:08 ID:???
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ    >>490
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
492482:2008/05/10(土) 22:43:34 ID:???
>>486
scopeを利用した、疑似配列を作成といったところですね。
すばらしい。そのような方法があるとは思いつきませんでした。

しかし、結局prevが呼ばれる回数が配列にしたときと同じであることが気になっています。
むしろ、通常配列の方が関数呼び出しよりもはやいのではないかと思っています。

また、上記の動作であるため、observeの呼び出し回数が、
destroyObserversの性能に大きく影響してしまうと思っています。
prototype.jsではそうなっていないと思っています。
493482:2008/05/10(土) 22:49:45 ID:???
>>490
そのuniqueIDで気になっていることとして、
例えば、removeChildして、appendChildしても同じ値になりますか?保証されますか?
また、cloneNodeしたときはどうなりますか?
まぁ、cloneNodeしたときはprototype.jsも考慮はしている作りにはなっていませんが。

>>482の1番は2番が実施出来るようにすれば実現できることだと思っているため、
2番の処理をいかに早く出来るかだと思っています。
494Name_Not_Found:2008/05/10(土) 22:59:26 ID:???
>>489
input type=textとかじゃないと、selectメソッド持ってなかったと思った。
それ以外の部分を選択状態にしたければ、
ノードをrengeオブジェクトに変換して、それのselectメソッドを呼べばいいと思う。
495482:2008/05/11(日) 00:09:06 ID:???
observの呼び出し回数によるdestroyObserversへの影響の
こちらが望むオーダーを書いておきます。

スクリプトでやる場合はlog(N)以下にしたいと思っています。(理想は1ですが)

ちなみに、prototype.jsはelementのサーチが1のオーダーで、
その後のハンドラのサーチがNのオーダーだと思っています。
なんとかelementのサーチをlog(N)に出来ないかと思っています。
(母数のNはelementとハンドラでユニークになるので、それがNでもよいし、
 prototype.jsのようにelementのみでNでもよいです)
496Name_Not_Found:2008/05/11(日) 09:15:43 ID:mHzlIR0Q
function Hoge() {
 this.count = 0;
}

function Hoge_start() {
 setInteraval(this.run, 1000);
}
Hoge.prototype.start = Hoge_start;

function Hoge_run() {
 alert(this.count); //thisがHogeではなくwindow
 this.count++;
}
Hoge.prototype.run = Hoge_run;

オブジェクト指向JavaScriptで↑のようなことをしたいのだけど
テンプレのA14のやり方だとどう書けばよいでしょうか?
497Name_Not_Found:2008/05/11(日) 09:37:22 ID:???
Q14 についての便乗質問:

<blockquote>
Q14. タイマーやイベントハンドラに設定するコードにthisを含めたいのですが
 "...this..." とか function(){...this...} ではうまく行きません
</blockquote>

ん ?
なんか変だな〜
" function(){this.〜} " 使いまくってるけど問題ないと思うけど...
できたてのサンプルがあるから とりあえず見て見て :
homepage2.nifty.com/alter/samples/table_background2/exam.html
498Name_Not_Found:2008/05/11(日) 09:51:36 ID:???
>>496
function Hoge_start() {
setInterval(function(t){ return function(){ t.run(); } }(this), 1000);
}

>>497
サンプル見た。Q14で言っているthisはHogeクラスのthis。
サンプルでのthisは対象Elementを指している。
クラスベースで作成した場合、それでは困るケースがほとんど。
499Name_Not_Found:2008/05/11(日) 10:33:33 ID:???
>>498
回答有難う.

OOP 表記については 今だに 理解してないけど
function f(){this.~} の場合は f() 自身を指すことは理解してます
ところが僕のサンプルでは
あたかも onclick="f(this)" を後から追加したように働く.

で, Q14 の Q では 質問者が指し示す this が
何を指しているのかが明確でないのではないかと.
500Name_Not_Found:2008/05/11(日) 10:37:59 ID:???
>>499
fではなく、fが所属するオブジェクトを指したいのが通常。
Q14のthisはfが所属するクラスインスタンス。
それはOOPを理解すれば明示的に書かなくてもわかる。
501Name_Not_Found:2008/05/11(日) 12:26:23 ID:???
オーダーなら有料だろな
502Name_Not_Found:2008/05/11(日) 15:10:00 ID:???
>>495
しばらく考えてみたけどやっぱり _eventID がいちばん効率的じゃないかと思った
せめて直接汚染するのは避けようと思って element.toString に生やしてみたら cloneNode でコピーされた;
503496:2008/05/11(日) 16:22:18 ID:mHzlIR0Q
>>498の方法でいけました。
ありがとうございました。

更に質問ですがJavaのようにpublicメソッドからprivate変数、privateメソッド
にアクセスすることはできないのでしょうか?
実質ローカル変数以外はほとんどpublicにするしかない?

function Hoge() {
 var privateVar = 1;
 function privateMethod() { ... }
}

function Hoge_publicMethod() {
 var x = priavteMethod();
 return x + privateVar;
}
Hoge.prototype.publicMethod = Hoge_publicMethod;
504Name_Not_Found:2008/05/11(日) 16:32:13 ID:???
function Hoge() {
 var privateVar = 1;
 this.Hoge_publicMethod = function() {
  var x = priavteMethod();
  return x + privateVar;
 };
 function privateMethod() { ... }
}

505496:2008/05/11(日) 17:03:14 ID:???
特権メソッド?では、インスタンス各々がpublicMethodのポインタをもつ事になり効率が悪いのでは?
506Name_Not_Found:2008/05/11(日) 17:14:30 ID:???
JavaScript には private という概念は無く、そういうのは常にクロージャで代替する
>>504 では Hoge_publicMethod がインスタンスが生成されたときの環境を保存したクロージャになってる
507Name_Not_Found:2008/05/11(日) 22:17:46 ID:YBuCkc1l
JavaScriptにWebページ上のある場所の座標を指定して
クリックと同様の操作を行えるメソッドや機能はありますでしょうか?
click()というメソッドはあったのですが、これはクリックの対象となる
オブジェクトを指定してやらないとクリックができないので座標が使えないのです。
508Name_Not_Found:2008/05/11(日) 22:35:36 ID:???
>>507
ない
509Name_Not_Found:2008/05/11(日) 22:35:43 ID:???
>>507
すべての要素について順次その位置を調べて該当座標上
にあるものを探す必要があるかもね。
510Name_Not_Found:2008/05/11(日) 22:53:37 ID:???
>>507
あれ?最近新しくできたんじゃなかったっけ?
なんとかFromPoint(x, y)ってやつ。
511Name_Not_Found:2008/05/11(日) 22:58:23 ID:???
>>505
お、きみスジいいね。今度おじさんと一緒にや・ら・な・い・か?

おっしゃる通り、インスタンスごとにメソッド持つことになって、
IE6とかだとセッタ・ゲッタ両方作ってたら参照でも2倍ぐらい重くなるし、ソートなんて数倍重くなるよ。
だから、おじさんはプライベートなメンバを作ることなんてそうそうないよ。
512Name_Not_Found:2008/05/11(日) 23:10:44 ID:???
>>502
そりゃ残念。
toStringはさすがにダメそうだから、
nodeNameとか、nodeTypeでもやってみたけどなぜかダメだったよ。
element.nodeType["_eventID"] = 10;
513Name_Not_Found:2008/05/11(日) 23:16:36 ID:???
one of the 国内の10人>>196
one of the 世界の10人>>490
どちらも何の役にも立ってない件についてw
じゃぁ俺は宇宙の10人だな\(^o^)/
514507:2008/05/12(月) 01:01:23 ID:???
>>508
ないんですか orz

>>509
確かにそれで出来そうですが、効率悪すぎますよね・・・

>>510
FromPointで検索してみましたが、目ぼしいものにはヒットしませんでした。
どこからの情報だかご存知ですか?
515Name_Not_Found:2008/05/12(月) 01:30:16 ID:???
>>510 >>514
elementFromPoint()か
あれはIE拡張→CSSOM(View Module)で標準化の流れで
Fx3b, Opera9.5b, Safari3.1も実装してるね
実際普通に使えるようになるのはもうちょっと後になると思うけど

elementFromPoint()使うんだったら、それで要素取得して
(要素がclick()持ってれば)click()呼ぶか
fireEvent()かdispatchEvent()でclickイベント発生させるかでできるね
516Name_Not_Found:2008/05/12(月) 01:59:42 ID:???
>>515
おお、それか。すっげぇ〜。
動的にvisibilityとかいじったり、ノード投入した直後とかでも正しく判定してくれるのか、
border edgeで判定してくれるのか、floatもOKなのか、
それらがブラウザ間で統一されているのか今からwktk中だお( ^ω^)
517Name_Not_Found:2008/05/12(月) 14:58:10 ID:???
google翻訳で翻訳した後に「翻訳を改善する」をクリックすると、スライドしながら隠れたメニューが表示されるんですけど、あれってどうやってるんでしょう。
<div>タグのstyle.display を "none"か空にすれば表示、非表示の切り替えはできるんですが、スライドの方法が思いつかないです。
ソースみてもかなり複雑だったし。。
518Name_Not_Found:2008/05/12(月) 16:41:31 ID:???
>>517
position: absolute;
タイマーで top|bottom|left|right を変更
519Name_Not_Found:2008/05/12(月) 17:17:30 ID:???
>>516
んなもんflexで作れって。アホか。JSなんて使い所がないんだよ。終わってんだから。
520Name_Not_Found:2008/05/12(月) 17:24:23 ID:???
頑張るな
flexもjsも欠かせない俺には趣旨が良く判らん
521Name_Not_Found:2008/05/12(月) 19:45:20 ID:???
基地外の発言に趣旨なんてないだろ
522Name_Not_Found:2008/05/12(月) 19:47:27 ID:???
>>518を見た>>517が「どうやったらいいんですか?」
と聞くときを考えて念のためjqueryサンプル
http://semooh.jp/jquery/ref/cont/toggle_menu/
523Name_Not_Found:2008/05/12(月) 20:43:39 ID:???
>>517
「翻訳を改善する」の場合は、
overflow:hiddenを設定し、heightを変更だね。

Firebugを使えば、どんなスタイルが適用されているのかが簡単に判って便利。
524Name_Not_Found:2008/05/12(月) 23:10:00 ID:???
こんばんは。いつも参考にさせていただいております。夜分遅くすみません。
さて、早速質問なのですがjQueryである要素のCSSの初期化(無効化)を行いたいのですがどのようにすればよいのでしょうか?
アドバイス等ご教授いただければ幸いです。
525Name_Not_Found:2008/05/12(月) 23:33:56 ID:???
divの中にdom操作でテーブルを作って
その結果のHTMLソースを得たいんですが

IEならinnerHTMLを使って source=$("tablediv").innerHTML とすれば変数にHTMLソースを得られますが
IE以外で同様の事をしたいのです

方法をご存知でしたらご教示ください
526Name_Not_Found:2008/05/12(月) 23:40:59 ID:???
>>525
IE以外でもinnerHTMLでできます(よほど古い/マイナーな
ブラウザでない限り)。
527Name_Not_Found:2008/05/12(月) 23:50:59 ID:???
>>526
どうもありがとうございます
何かでie固有のプロパティーみたいなのを読んで勘違いしていました
528Name_Not_Found:2008/05/13(火) 01:37:47 ID:???
このウインドウ内の、個々のレスのID:xxxxxxxxの
ID:の後ろxxxxxxxx部分を置換したいんですけど、なんか良い方法ありますか?

あ、開いてるブラウザのアドレスに貼って実行しようと思ってます。
下のみたいなのを、xxxxxxxxに対してやりたいと思って・・・
JavaScript:document.body.innerHTML=document.body.innerHTML.replace(/ID:/g,'糞ID:');focus();
529Name_Not_Found:2008/05/13(火) 08:26:56 ID:???
>>528
おたくが書いた方法でできるんじゃないの。何が問題?
530Name_Not_Found:2008/05/13(火) 10:39:51 ID:/2VeZciO
jQueryで、<select>の値が n の場合は、小窓を開くという処理を
書いたのですが、WinIE7のポップアップブロッカーでブロックされて
しまいます。
普通に、onClickなりのクリック動作だとブロックはされないのですが…。

$('#select').change(function(){
if($('#select').val() == n){
window.open('komado.html',
'KomadoWindow',
'scrollbars=yes,resizable=yes,width=300,height=400'
);
return false;
}
});

どうしたらブロックされずに開くことができるでしょうか?
531Name_Not_Found:2008/05/13(火) 11:26:06 ID:???
>>530
ポップアップブロッカーの仕事がJavaScriptから開かれる
小窓をブロックすることである以上、それはユーザの選択であり
回避できない(回避できたらブロッカーのバグとしてすぐ修正される)
と思われ。あきらめれ。
532Name_Not_Found:2008/05/13(火) 13:03:50 ID:???
>>530
そんな細工が迷惑なのでブロックツールが人気なわけでしょ。
洩れも使ってる。
533Name_Not_Found:2008/05/13(火) 13:39:30 ID:???
>>524
状況がわからないな。どんなことやろうとしてるの?
534Name_Not_Found:2008/05/13(火) 14:45:54 ID:???
小窓に見えるDiv要素を表示すればいいのでは?
535Name_Not_Found:2008/05/13(火) 15:40:19 ID:???
ブラウザのアドレス欄に貼って実行する類の処理を
他の方法で出来ませんかね?
536Name_Not_Found:2008/05/13(火) 16:33:16 ID:???
>>535
自分が見るだけだったらProxomitronとかその他ローカルに
加工してから表示するツールがあるんじゃないかな。
537Name_Not_Found:2008/05/13(火) 16:45:53 ID:???
>>535
Greasemonkey
538Name_Not_Found:2008/05/13(火) 18:22:36 ID:???
Javascriptで画像を表示させるにはどうすればいいですか?
539Name_Not_Found:2008/05/13(火) 19:23:39 ID:???
var tNode = document.getElementById("hoge");
var cNode = document.createElement("img");
cNode.src = "./hoge.png";
tNode.appendChild(cNode);
540Name_Not_Found:2008/05/13(火) 21:48:58 ID:???
   ∩___∩         |
   | ノ\     ヽ        |
  /  ●゛  ● |        |
  | ∪  ( _●_) ミ       j
 彡、   |∪|   |        J
/     ∩ノ ⊃  ヽ     >>538
(  \ / _ノ |  |
.\ “  /__|  |
  \ /___ /
541517:2008/05/13(火) 22:47:48 ID:???
ありがとう。
ちょっとやってみます。
542Name_Not_Found:2008/05/13(火) 23:02:44 ID:???
cloneNodeしたときに、付与したハンドラやプロパティも一緒に
コピーされるかどうかについて、質問です。
・IE/FireFox/Safari/Operaがどのような動作をするのか?
・DOMの仕様はどうなっているのか?
上記について、ご存知の方教えてください。
543Name_Not_Found:2008/05/13(火) 23:03:15 ID:???
>>538

var canvas = document.getElementById('cvs');
var ctx = canvas.getContext('2d');
var img = new Image();
img.src = "image1.gif";
ctx.drawImage(img, 0, 0);
544542:2008/05/13(火) 23:36:32 ID:???
>>543
canvasノードをcloneNodeしてみたけど、
canvasに書き込んだ内容はコピー出来なかった(´・ω・`)
canvasの内容ごとcloneしたいんだけど方法ありましたら、教えてください。
545Name_Not_Found:2008/05/14(水) 01:36:52 ID:???
>>544

当たり前。
cloneNode して変形して描画するをセットで行う。
546Name_Not_Found:2008/05/14(水) 02:46:34 ID:???
どの立場から見て当たり前なんだかw
まあ、とっくに過去の遺物だからどーでもええけどw
547Name_Not_Found:2008/05/14(水) 07:54:51 ID:???
>>546
その「当り前」という意味は、cloneNodeはDOMツリーの
構造をコピーするものだから、canvasで描画したときに
描画内容がDOMツリーとして構築されて行くのでない以上
コピーされるわけはない、という意味じゃないかなー。
548Name_Not_Found:2008/05/14(水) 08:15:20 ID:???
>>542
例えばElementに対するcloneNode()のコピー対象は
属性と属性値(、deepがtrueなら内容も)なので
内部的に属性として扱われるようなものなどでない限りは
プロパティはコピーされないと考えてください

DOMの仕様上ではハンドラ(リスナ)は基本的にコピーされない
(DOM 2 Eventsの1.3.1のEventListenerと1.3.2を参照。
ただsetAttribute(イベント属性, FunctionBody)で付加したものは属性扱いなので
真っ当な実装ならコピーされるでしょう。IEは駄目だけど)

canvasはtoDataURL()経由でコピーすればいいんじゃないですかね
549548:2008/05/14(水) 08:26:45 ID:???
×canvasはtoDataURL()経由でコピー
○canvasの描画内容はtoDataURL()経由でコピー
550Name_Not_Found:2008/05/14(水) 08:37:50 ID:???
普通にdrawImageの引数にcanvas要素を取れるよ
どんなブラウザでもいけるかは知らないけど
551Name_Not_Found:2008/05/14(水) 11:02:39 ID:???
クロスドメイン制限がどうしても越えられません。
どうにかして違うドメインのページにJavaScriptを適用する方法はないものでしょうか。
552Name_Not_Found:2008/05/14(水) 11:28:46 ID:???
あるわけない。よからぬことを企んでいるとしか思えないから。
553Name_Not_Found:2008/05/14(水) 11:41:55 ID:???
>>551
できたらあっという間に何千万も儲けられる(犯罪で)。金の
ためなら労力を厭わない頭の切れる犯罪者がゴマンといるのに
できていない。それをできるんじゃないかと思うアンタはアホだな。
554Name_Not_Found:2008/05/14(水) 15:02:16 ID:???
初歩的なことで申し訳ないのですが、HTMLタグ内に直接JSを埋めて実行する場合、

onClick="this.style〜"

と言った感じでthisオブジェクトが利用できますが、関数を呼び出して実行する場合に同様に機能させる方法はありますでしょうか。
具体的には、
<div id="hoge" onClick="hello()">AAA</div>

funciton hello(){
var test = document.getelementById("hoge")
test.style = 〜
}

をId名など一切定義せずにその時関数が呼び出された呼び出し元に随時効果を適応させる記述方法を探しています。
555Name_Not_Found:2008/05/14(水) 15:19:28 ID:???
>>554

関数に this を渡せば。
556Name_Not_Found:2008/05/14(水) 15:21:30 ID:???
>>554
スローな結果は否めないとしてidを定義するのがイヤなら順番で取得
しかないのではないかな。
それとthisはオブジェクトなの?知らなかったお。
557Name_Not_Found:2008/05/14(水) 15:27:53 ID:???
>>554
onclick="hello(this)"
function hello(elt) { ... elt.style = ... }
>>556
thisは擬変数でthisが指しているものはオブジェクトでしょ。
558Name_Not_Found:2008/05/14(水) 15:33:06 ID:???
隔離スレがポシャったから(健全化したともいう :-)
nullがまたこっちに来るようになったんじゃないか?
559Name_Not_Found:2008/05/14(水) 15:37:31 ID:???
あれぇ、おらのがっこではthisはチーワードって習ったんだがや。
チーワードの日本語訳は擬変数っちゅうのでいいのがや?
560Name_Not_Found:2008/05/14(水) 16:49:50 ID:???
>>559
キーワード(予約語)というのは字句/構文上の問題。
だったらifやwhileもキーワードだがthisはifやwhileと
同じようなものだと言われて納得するかい?
擬変数(pseudovariable)というプログラミング言語用語を
知らないのなら勉強すりゃいいじゃん。
561Name_Not_Found:2008/05/14(水) 17:17:12 ID:???
インチキ変数てなわけですか。偽変数。
562null:2008/05/14(水) 17:26:22 ID:???
ん ?
誰かに呼ばれたような...
ちなみに "隔離スレもどき" は無数にあるのよね.
んで,正直に白状すると最近やる気なし.

問題は IE の分裂
( 5,6 だけでもウンザリなのに, 7,8... まで発生 )
付き合い切れません !
563Name_Not_Found:2008/05/14(水) 18:10:11 ID:???
FF限定でスクリプト組める仕事してる俺は勝ち組!
564Name_Not_Found:2008/05/14(水) 18:24:02 ID:???
>>562
俺はie5は完全に切り捨てているな
565Name_Not_Found:2008/05/14(水) 18:26:06 ID:???
分裂して困るようなコードを最初から書かなければいい。
566Name_Not_Found:2008/05/14(水) 18:32:55 ID:???
そうだそうだ!
567Name_Not_Found:2008/05/14(水) 18:41:40 ID:???
>>562
サポート打ち切られた OS を使い続けているせいで
使える web-browser も限られてしまう.
それでも Mozilla 系 (残念ながら FF も使えない) なら問題ないはず.
しかし, 念のため IE 5.17 (唯一使える IE) で動作チェックするとドボ〜ン.

最近作ったり改良したサンプルが 2 品とも動作不良.
(デバッグで引っかからないので CSS か他の原因と予想)
5.17 で問題を起こすのなら他のバージョンでも同様と考えるべき(はぁ)

OS 乗り換えれば良さそうなものだけど
MS も Apple も謎 OS ばかり出してやがる !
(こうなったら Linux 系... いろいろ調べるも先に進めず)
568Name_Not_Found:2008/05/14(水) 19:01:54 ID:???
(さっさと糞ブラ捨てろ的な意味で)待望の IE8 だと思うんだがなぁ
569Name_Not_Found:2008/05/14(水) 20:48:59 ID:???
ごちゃごちゃ言ってないで、早急にAS3をやれ。JSは終わってるって言ってるだろ。おまえらさあ、いつまで能力の無駄遣いやってんだよ。
570Name_Not_Found:2008/05/14(水) 21:25:27 ID:???
どうも不思議だな。「JavaScriptに怨みがある」というのは
どういうシチュエーションなんだろう。昔書いていたけど
ヘタを打ってからかわれて怨むようになったとか?
571Name_Not_Found:2008/05/14(水) 21:36:43 ID:???
洩れには、JS終わったと再三喚いてる奴がなんでこのスレにいるのかが
ナゾだな。中学生が小学校の校舎でウロウロしているようなもんだろ。
ね、JS終わった君。
572Name_Not_Found:2008/05/14(水) 21:48:38 ID:???
>>570
何度もブラクラに引っかかったとか
573Name_Not_Found:2008/05/14(水) 23:13:29 ID:???
アンチAS工作だろ
ASにコンプレックスを持ってるJS使いとか
ASのスキル持った奴が増えて単価が落ちないように企ててるAS使いとか
574Name_Not_Found:2008/05/14(水) 23:20:36 ID:???
そりゃ全然わからないな。JS使いはFlashやASに関心ないだろ。
ブラウザに直で組み込まれてるからこそ色々やって遊べるんだし。
575Name_Not_Found:2008/05/15(木) 00:05:32 ID:???
同じECMAScript系のJavaScriptとActionScriptだけど、
その利用用途はかなり異なっているのだから、
どちらか一方しかやらないというのは勿体無いね。

いつもの煽りのように、アホ過ぎて片方しか覚えられないというなら仕方無いけれど。
576Name_Not_Found:2008/05/15(木) 00:05:39 ID:???
>>548
thx。こっちは実装を調べてみた。

//DOM/IE/FFコピー有無状況
//DOM対応はこちらが勝手に想像した仕様。

//@: ×/○/×
$("XXX1").test1= "1";

//A: ○/○/○
$("XXX2").setAttribute("test2", "2");

//B: ○/△/○(IEの△とはプロパティのコピーはされるが、
//そもそもリスナとして登録されない。)
$("XXX3").setAttribute("onmouseover", "test3();");

//C: ×/×/×
$("XXX4").onclick = function(){ alert(4); };

//D: ×/○/×
$("XXX5").addEventListener("click", function(){ alert(5); }, false); //IEはattachEvent
577576:2008/05/15(木) 00:13:20 ID:???
で、自分が何を言いたいかというと、
IE含めたクロスブラウザ対応のcloneNodeを作成したいと思っていて、
その仕様をどうすればよいかについて検討したいと思っています。

elementにプロパティを付与することは実際の実装上で必要になることはおそらく少ない。
(注意点として>>502にあるようにプロパティを付与しないと解決出来ない問題もある)
しかし、イベントを付与することは普通に行うことでしょう。(特にIEのattachEvent)。

そのような状況においてどうすればいいと考えますか?
578Name_Not_Found:2008/05/15(木) 00:56:09 ID:???
バブルするイベントタイプを要素オブジェクトで監視しねえよタコ。
そのmouseoverをdocumentで監視して、かつ、mouseoutを使わずに、一つのリスナーで処理できるようになってから出直せ雑魚。
579Name_Not_Found:2008/05/15(木) 00:58:29 ID:???
>>578
上の文面を見てそのような些細なことが気になるなんて頭おかしいんじゃないの?
580Name_Not_Found:2008/05/15(木) 02:45:31 ID:???
>>550
ああ、そうか。失念してました

>>576
>@ >B
そういえばIEのelement.setAttribute(prop, value)はelement[prop]=valueの別表記でしたっけ

>>577
イベントリスナやユーザが独自に付加したプロパティを含めてコピーする
クロスブラウザ対応のcloneNode()をつくりたいということですか?
581Name_Not_Found:2008/05/15(木) 08:27:02 ID:???
>>580
ブラウザ間で統一していれば、どちらでもよいです。
ですが、とりあえず、IEをDOMの仕様に合わせる方向の方が楽&良いのではないですかね。
(出来れば、オプションでどちらか指定できるとよいですが)

その場合、Dの対策のためにイベントを削除する必要があって、
cloneしているものだから、コピー前とコピー後の要素が
どこかで同じものだという認識をする必要があると思っています。

@の対策は結構難しい気がしています。
Iあるプロパティが@方式かA方式のどちらで指定されたのかを検知する方法ありますかね?
582Name_Not_Found:2008/05/15(木) 08:42:20 ID:???
丸付きの数字って機種依存文字ってやつじゃないの?
583Name_Not_Found:2008/05/15(木) 09:02:14 ID:???
うん。避けたほうがよいかもね
584Name_Not_Found:2008/05/15(木) 09:07:07 ID:???
jQuery みたいにラッパーで操作すればラクだとおも

3 と 4 は論外として、毎回 [sg]etAttribute するようにして 1 も切り捨てれば案外簡単にできそうだが
585Name_Not_Found:2008/05/15(木) 10:07:00 ID:???
丸付きの数字はマズイなネットを使う人間には基礎の基礎なんだが
586Name_Not_Found:2008/05/15(木) 10:11:57 ID:???
50年もすればいたるところUnicodeでどうでもよくなってるよ。
今はdatファイルはShift_JISだったっけ?
587Name_Not_Found:2008/05/15(木) 11:16:29 ID:???
>>586
携帯用サイトはどうなるかは判らないが、さすがにあと4,5年でWebはほぼUnicodeになるのでは。
2chのdatもUTF-8化が検討されているようだし。
http://qb5.2ch.net/test/read.cgi/operate/1207973589/
588Name_Not_Found:2008/05/15(木) 11:45:47 ID:???
>>586
Unicodeとジジイ・ババアだな、いたるところ。
589Name_Not_Found:2008/05/15(木) 14:04:46 ID:???
50年はさすがに待てないわ
590Name_Not_Found:2008/05/15(木) 15:49:52 ID:???
チェックが入ってたら送信できるようにするにはどうしたらいいですか?
<script type="text/javascript">
<!--
function check(theform){
//性別が入力されているか
for(i=0;i<=1;i++){
if(theform.sei[i].checked==false){
alert('性別をチェックしてください')
return false;
}
}
return true
}
//-->
</script>
<form name="form" onsubmit="return check(this)">
性別<input type="radio" name="sei" value="male">男
<input type="radio" name="sei" value="male">女
<p><input type="submit" name="submit" value="送信"></p>
</form>
591Name_Not_Found:2008/05/15(木) 15:55:25 ID:???
>>590
ロジックがおかしいだろ。「checkedがtrueであるものの個数」を
数えて、最終的にその個数が1ならtrue、それ以外falseを返すとか
考えたらどうだろう。
592Name_Not_Found:2008/05/15(木) 16:09:23 ID:???
return theform.sei[0].checked || theform.sei[1].checked;
593Name_Not_Found:2008/05/15(木) 19:12:54 ID:???
>>591
formのテキストでは入力チェックの処理が簡単にできたのですが
ラジオボタンだと結構苦戦してしまいました;助言ありがとうございました!
>>592
どうもです!
参考に作ってみたらこれで動きました!
<script type="text/javascript">
<!--
function check(theform){
//性別が入力されているか
if((theform.sei[0].checked==false) && (theform.sei[1].checked==false)){
alert('性別をチェックしてください');
return false;
}
return true
}
//-->
</script>
<form name="form" onsubmit="return check(this)">
性別<input type="radio" name="sei" value="male">男
<input type="radio" name="sei" value="female">女
<p><input type="submit" name="submit" value="送信"></p>
</form>
594Name_Not_Found:2008/05/15(木) 22:06:51 ID:IFEqkfAJ
firefox用のgreasemonkeyについて
自分で作った関数を実行するようなリンクはgreasemonkey上ではどのようにしてつくればいいんでしょう?
595Name_Not_Found:2008/05/15(木) 22:26:13 ID:???
いつも通りでおk
596Name_Not_Found:2008/05/15(木) 22:32:03 ID:???
wrappedJSObject
597Name_Not_Found:2008/05/15(木) 22:35:04 ID:???
>>584
まぁ、何らかのラッパーにはするとして、
jQueryはinnerHTMLで回避しようとしているけど、
参照型のプロパティ付けたやつはどうだろうと思って、
参照型はそもそもcloneNodeしてもコピーされないんだな。
それだとinnerHTMLでもほぼ同じ結果になりそうだと思ってる。
598Name_Not_Found:2008/05/15(木) 23:01:07 ID:IFEqkfAJ
>>595
いつもどおり、javascript:関数名 にリンクをはっても
greasemonkey内の関数は読まないのか関数が定義されていない。とエラーがでます。
599Name_Not_Found:2008/05/15(木) 23:04:58 ID:???
>>598
まさかいつもそうやっていたとは思わなかった
http://d.hatena.ne.jp/minghai/20080101
の 落とし穴#2
600Name_Not_Found:2008/05/15(木) 23:05:12 ID:???
>>598
unsafeWindowのプロパティにするとかしろよ。つうかここで訊いてる時間で説明書読め。
601Name_Not_Found:2008/05/15(木) 23:10:37 ID:???
>>597
innerHTML まで真似しろとは言ってないよ
たとえば
ext.$('elem1').setAttribute('hoge', function() {}); でラッパー側に蓄積していって
ext.$('elem1').cloneNode(true); ですべてのコピーが保証されるってのはどうだろうか
elem1 の同一性チェックには >>486 の storage を応用して、
というか相性よさそうだからひとつのライブラリにしちゃえば _eventID 問題も解決、と
602Name_Not_Found:2008/05/15(木) 23:22:18 ID:IFEqkfAJ
>>599
>>600
ありがとうございました。やりたいことができました。
今回javascriptをすっとばしてはじめて触るものでなにからなにまで1からなので苦労しています。
603Name_Not_Found:2008/05/15(木) 23:23:57 ID:???
バブルする==>アホ外人が俗に言うイベントデリゲーション
バブルしない==>HTMLのイベント属性

以上。要らんもんこねくりまわすよりどれだけシンプルか。
604Name_Not_Found:2008/05/16(金) 11:10:04 ID:???
event delegation
to obligate functions to another as agent or deputies on events.
605Name_Not_Found:2008/05/16(金) 21:43:58 ID:A8/8iygj
関数で、フォーム名を引数で受け取ってるんですが、うまく展開できません。
どう書いたらいいのでしょうか。

<script type="text/javascript" language="JavaScript">
function TestSubmit( test_fm ) {
document.test_fm.submit();
}
</script>

<form name="test_user_form" method="post" action="test_user.php">
<input type="button" value="test" onclick="TestSubmit( 'test_user_form' )"/>
</form>


関数内で、フォーム名を直接指定すればsubmitできます。
document.test_user_form.submit();
606Name_Not_Found:2008/05/16(金) 21:47:58 ID:???
>>597
IEをDOMの仕様に合わせるんであれば、
コピー元がElementならinnerHTMLから再構築するのが
一番手っ取り早いんじゃないでしょうかねぇ
607Name_Not_Found:2008/05/16(金) 22:24:12 ID:???

アマゾンの書籍のページからタイトル、著者名、出版社、
値段などの項目をタブ区切りのファイルにはき出す
bookmarklet作りたいんだけど、可能?

アマゾンのページのisbnを参照して公立図書館の検索機能に
飛ばして自動で検索するまでは調べて、自分ちの近くの図書館バージョンまでは作ったので、次のステップをやりたいんだけど。

アマゾンのawsとか利用する必要有り?
608Name_Not_Found:2008/05/16(金) 22:29:39 ID:???
>>605
document.forms[test_fm].submit();
609Name_Not_Found:2008/05/16(金) 22:35:41 ID:???
>>601 >>>>606
イベントくっつけたままコピーするなら>>601方式でIE以外にイベント付与して、
消した状態でコピーするなら>>606方式がよいと思った。

jQueryはイベントも一緒にコピーするかしないか選べる機能があるけど、
一旦>>606方式で全部消した後に、
>>601方式でイベント付与するっていうちょっと無駄なやり方してるよね。
610Name_Not_Found:2008/05/16(金) 22:39:19 ID:A8/8iygj
>>608
ありがとうございます!
forms[]の中にフォーム名入れてもいいんですね。
参照番号だけかと思ってた。
611Name_Not_Found:2008/05/16(金) 22:56:42 ID:???
amazon webサービスつかえば?
612607:2008/05/16(金) 23:30:48 ID:???
悪い悪い、アマゾンのソース見たら、ソースページをかなり下の方に
スクロールしてようやく情報が出てきた。
ソース見れないと勘違いしマスタ。がんばってみまふ。
613Name_Not_Found:2008/05/16(金) 23:35:29 ID:3AOivxLR
リンク先のjpeg画像を、強制的にダウンロードダイアログを
出して保存させるようにしたいのですが
javascriptのみで可能でしょうか?

普通にリンクするだけだと、jpegだと当然ブラウザに表示されて
しまいます。 ブラウザで開かないファイル形式なら、ダウンロード
ダイアログを勝手に出してくれるのですが…

CD-ROM等でも使いたいのでCGIとかは使えません。
よろしくお願いします。
614Name_Not_Found:2008/05/17(土) 00:10:54 ID:???
>>613
MIME
615Name_Not_Found:2008/05/17(土) 00:13:24 ID:???
鯖上でって言うなら MIME タイプいじってやればいいけど
CD-ROM でっていうなら無理だわな
616613:2008/05/17(土) 00:23:52 ID:FoauIqhd
>614,615
レスどうもです。

そうなんですよ javascriptでトリッキーなことして
ブラウザを「勘違い」させるような事って、できないもんですかね…
617Name_Not_Found:2008/05/17(土) 00:26:33 ID:s68eAPKf
greasemonkeyです。質問させてください。
function refresh(state){
//閉じている場合
if (state==0){
if (kazu>0){
GM_infoPanel.innerHTML='書き込みがあります'
}else{
GM_infoPanel.innerHTML='<A id="npost" href="javascript:">ここをクリック</A>'
var npost = document.getElementById('npost');
npost.addEventListener("click", showpost_none, true);
}
}
}
と書いています。showpost_noneの関数の中身は
function showpost_none(){

GM_infoPanel.innerHTML='<BODY><INPUT size="20" type="text" name="name">\
<FORM><TEXTAREA rows="8" cols="39" name="comment"></TEXTAREA></FORM>\
<INPUT type="submit" name="submit"><A id="closepost" href="javascript:">閉じる</A></BODY>';

var closepost_none = document.getElementById('closepost');
closepost_none.addEventListener("click", refreshnurikabe(0), true);

}
となっています
618Name_Not_Found:2008/05/17(土) 00:27:28 ID:s68eAPKf
これを実行し、「ここをクリック」のリンクをクリックすると、
Firefox/Profiles/rtzhpmmo.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js :: showpost_none :: line 409" data: no]
こういうエラーがでるのですがなぜでしょう。
教えてください。
619Name_Not_Found:2008/05/17(土) 00:33:27 ID:s68eAPKf
ちなみに
showpost_noneの
var closepost_none = document.getElementById('closepost');
closepost_none.addEventListener("click", refreshnurikabe(0), true);
この二行を削除すれば、ここをクリック を押したときに動作しますが
閉じるを押したときにエラーがでます。
620Name_Not_Found:2008/05/17(土) 01:47:02 ID:2mNU1GvT
textareaの中でクリックした位置が何行目なのか取得したいのですが
どのようにしたらいいですか?
621Name_Not_Found:2008/05/17(土) 01:53:27 ID:???
おれはついに>>617を解読したぞ!エウレーカ!多分。

refreshnurikabe(0);はおそらく関数を返却する関数ではなく、
refresh(0)の間違いで、たぶん
closepost_none.addEventListener("click", function(){ refresh(0)}, true);
と書きたいんだと思った。

あと、
var npost = document.getElementById('npost');の行はもしかしたら
var npost = GM_infoPanel.firstChild;にした方がよいかもしれない。
622Name_Not_Found:2008/05/17(土) 02:06:39 ID:aVBxGKno
iframeを使った自動ポストを防ぐ処理を実装したいと思います
現在リファラーチェックはつけました
parent.location.hrefを見て、iframe内に表示されているかどうかを
確かめる方法を考えたのですが、
もしかしたら、自動でないポストもありうるかもしれないので、躊躇しています
自動ポストを検出するいい方法があれば教えてください
623Name_Not_Found:2008/05/17(土) 02:17:21 ID:s68eAPKf
>>621
その通りでございました
closepost_none.addEventListener("click", function(){ refresh(0)}, true);
これで引数を渡すことができました
ただ、同じ条件でいろいろとかいてるうちにエラーコンソールが立ち上がったりする場面が・・
なんでじゃーー(javascript:へのリンクを実行してるんでしょうか・・・)
624Name_Not_Found:2008/05/17(土) 02:24:20 ID:s68eAPKf
javascript:void(0)にすることによって、エラーでなくなりました。
void書いてないのにエラーでなかったりへんなの・・・
625Name_Not_Found:2008/05/17(土) 02:29:13 ID:+faOYZsW
お手数ですが、どなたかJQuery(ver. 1.2.3)についてご教授頂けないでしょうか?
以下のように、search.cgiから取得した検索結果を全てloadクラスに仮想表示して、
page毎に20件ずつdispクラスに表示したいと思います。
ところが、loadクラスに表示したはずのhtmlが$(".load").html()では
読み込めません。どうすればloadクラスのhtmlを読み込めるでしょうか?

尚、loadメソッド3番目の引数で指定するコールバック関数内なら
loadクラスのhtmlを読めます。しかし、2ページ、3ページをdispクラス
に表示する際には、srchの引数にkeywordを与えないので
loadメソッドは実行しません。コールバック関数内
でloadクラスのhtmlを読むのは意味なさそうです。

<script type="text/javascript">
$(function(){ srch("1", "ほげほげ") });
function srch (page, keyword) {
//keywordが存在すれば、検索結果を全てloadクラスに仮想表示
if (keyword) {
$(".load").load("/search.cgi", { keyword: keyword });
}
//page毎に20件ずつdispへ表示したい
$(".disp").html(
//$(".load").html()でloadクラスのhtmlを取得できない...
);
}
</script>

<body><div id="srch">
<div class="disp"></div>
<div class="load"></div>
</div></body>

※もっと別の良い表示方法があればご指摘頂ければ幸いです。
626Name_Not_Found:2008/05/17(土) 03:26:34 ID:2qZ+Dn1G
var x = new Array();
とした場合に、x['join'] とすると、Arrayのjoinメソッドを参照してしまうのですが、
配列の要素として設定したものと、Arrayのメソッドはどう区別すべきでしょうか?

今作成しているものは、配列の要素として関数を設定しているので typeofでは区別できません。
for( in ) でキー値と比較するしかないのでしょうか?

IE7/Firefox2/Opera9 全てで同じように動作しています。
何か良い方法がありましたら教えてください。よろしくお願いいたします。
627Name_Not_Found:2008/05/17(土) 03:51:19 ID:???
>>625
直した。
loadの第3引数に渡す関数内部で$(".load").html()を呼び出すようとよさげ。

function srch (page, keyword) {
$(".load").load("./search.cgi", { keyword: keyword }, function(){
$(".disp").html( $(".load").html());
});
}
628Name_Not_Found:2008/05/17(土) 03:54:44 ID:???
>>626
そもそも配列じゃなく{}に入れた方がいいよ。
var x = {};
配列はあくまでフラットなリスト構造を作るのに使ってる。おれは。
629Name_Not_Found:2008/05/17(土) 04:08:14 ID:???
>>620
むりぃ〜。せめて、クリックじゃなく、選択範囲が指定されてる時に何行目から選択されているかとか
contentEditableとかなら誰かが何とかしてくれるかも。
630Name_Not_Found:2008/05/17(土) 04:10:32 ID:2qZ+Dn1G
>>628
なるほど、ありがとうございます。

でも試したら、 x['toString'] は値があるんですよね。
残念ながら、本件については、それで解決とはいかないです。
631Name_Not_Found:2008/05/17(土) 04:23:22 ID:???
>>627
む、よく見ると、第3引数の中なら取得できると書いてありますね。
なら、srch関数の作りを変えて、以下のような感じかな?
function srch (page, keyword) {
if(keyword){
$(".load").load("./search.cgi", { keyword: keyword }, function(){
$(".disp").html( $(".load").html());
});
} else {
$(".load").load("./search.cgi", function(){
$(".disp").html( $(".load").html());
});
}
632Name_Not_Found:2008/05/17(土) 04:30:18 ID:???
>>630
なるほど。じゃぁ参照するときは以下の判定もしとくとよいかも。
function getValue(key){
if(x.hasOwnProperty(key)) return x[key];
}
getValue("toString");
で、書き換えるときは、普通にx.toString = 1;とか出来るっぽ。
633Name_Not_Found:2008/05/17(土) 04:31:18 ID:???
>>630
何がしたいのかわからん
インスタンスのメソッドを上書きして、正しい動作だが。
634Name_Not_Found:2008/05/17(土) 04:51:37 ID:2qZ+Dn1G
>>632
こんなメソッドがあるとは知りませんでした。勉強になります。
http://developer.mozilla.org/ja/docs/Core_JavaScript_1.5_Reference:Global_Objects:Object:hasOwnProperty

IE7/Firefox2/Opera9/Safari3 でやりたいことが正常に動作したので、これを使わせていただきます。
どうもありがとうございました。

>>633
別に Javascriptのエンジンがバグってるとは言ってないです。

635Name_Not_Found:2008/05/17(土) 05:01:39 ID:2mNU1GvT
>>629
無理っぽいですかサンクス
636Name_Not_Found:2008/05/17(土) 10:40:24 ID:T+Nhd5TV
現在表示がかかっているブラウザの top と left の位置を
取得したいのですができますか?
IE6です。
637Name_Not_Found:2008/05/17(土) 11:23:21 ID:???
( ゚д゚)
638Name_Not_Found:2008/05/17(土) 13:56:16 ID:???
(  Д ) ゚ ゚
(つд⊂)ゴシゴシ
( ゚д゚)
( ゚д゚ )
639Name_Not_Found:2008/05/17(土) 13:56:31 ID:???
>>636
できる
640Name_Not_Found:2008/05/17(土) 14:39:00 ID:???
「できる」というのと「できない」というのは実は同じなんだ。
641625:2008/05/17(土) 15:05:02 ID:+faOYZsW
>>631

お返事ありがとうございます。
しかし、何度も search.cgi にアクセスするのは避けたいです。
loadメソッドは検索実行時にだけ実行して、loadクラスの中から
20件だけdispクラスに表示したいのです。srch関数には、
以下のように引数を渡したいです。

検索実行時に1ページを表示:srch("1", "ほげほげ")
2ページを表示:srch("2")

※要は、検索実行時に検索結果一覧を取得保持して、
 20件表示をjavascriptで制御したいのです。
642Name_Not_Found:2008/05/17(土) 18:51:57 ID:???
クラスやidが付いていない要素に新たにクラスやidを追加させることは出来ますか?
具体的には↓のような感じにしたいです。
<li><a href="#">test</a></li> → <li><a class="current">hoge</a></li>
さらにその内容を
document.getElementById('current').innerHTML = 'huga';
と変更させることはできますか?

もしできればそのやり方をご教示ください。
よろしくお願いします。
643Name_Not_Found:2008/05/17(土) 19:07:02 ID:???
>>641
入力データと出力データが分からないとちゃんとは答えられないな。
(というかそんな質問で誰かが答えられると期待しているのにびっくりだ)

まぁやり方として、楽そうなのは、
1. $(".load").html()で取得したデータをグローバル変数に格納する。
そのときに、扱いやすいデータ構造に変換する。(例えば、件数ごとの配列とか)
 →この変換処理の内容が想像つきますか?
2. 第1引数で指定された数値に応じて、上記の構造からデータを取り出す
 (1なら最初の20件、2なら21件目から40件までのデータ)
 →これは出来そうですか?
3. 2で取りだしたデータから表示用に整形して、表示する。
 →どう表示したいのですか?
644Name_Not_Found:2008/05/17(土) 19:16:29 ID:???
>>642
出来るが、前提として、付与したい要素にアクセスする手段がなにかしらある必要がある。
<body><li><a href="#">test</a></li></body>
なら、document.body.firstChild.firstChild.id = "current";
とすれば、やりたいことができる。
ただ、currentを付与したい要素がどこにあるかを知っている必要があるし、
また場所が変更されないことが前提になってしまう。
これが問題があるのかないのかは、あなたの文章を見ただけでは判断が出来ない。
645Name_Not_Found:2008/05/17(土) 20:07:16 ID:???
>>642
余談的な話だがそれは追加ではなくてアンカー属性の変更だろ。
たしかHTML的にその変更後のマークアップは不正か非推奨のはず。
それからクラスと書くのはよくない。プログラミングの場合デフ
ァクトでそれは「クラス」を連想させる(結果的に誤解を与える)。
646Name_Not_Found:2008/05/17(土) 20:23:31 ID:???
>>645
少なくともHTML 4.01/XHTML 1.0ではhrefは省略可能なので不正ではないよ
非推奨というのも勉強不足なのか聞いたことがないな。仕様のどこに書いてある?
クラスは文脈で理解できる範囲だと思う
647Name_Not_Found:2008/05/17(土) 21:29:03 ID:???
マークアップが不正なのは>>644だろ
言語的にクラスのないJavaScriptでクラス指向を連想するなら、まず自分の知能を疑え
648Name_Not_Found:2008/05/17(土) 21:49:01 ID:???
>>646-647
645だが、雑駁な記憶で書いてしまったようだ。すまん。反省している。
排水の陣でひと言だけ援護してみると、リンクのないアンカーはウェブ
デザイン的には邪道だ。それはユーザーに誤解を与えるし世界中のあち
こちで要らぬクリックを誘発することになる。Uタグとの混同も問題だ。
649Name_Not_Found:2008/05/17(土) 21:53:39 ID:???
<a name="label">ラベル</a>
650Name_Not_Found:2008/05/17(土) 22:28:55 ID:???
>>642 は記入ミスなのではないだろうか ?
なぜなら href="#" となっているから.
これは <a>~</a>をボタン代わりに転用するときに良く用いられる記述.
(この使い方は個人的に邪道だと思っている)

>>642 は たぶん, 以下のように書きたかったのでは ないかな ? :
<li><a href="#" id="current">hoge</a></li>

しかし, 質問者には ( getElementById() を使わなければ という ) 先入観が入っていて
document.getElementById('current').innerHTML = 'huga';
などと言う記述が続く.
これでは誰でも幻惑されてしまう...
651642:2008/05/17(土) 23:13:25 ID:???
ごめんなさい。掲示した例が大きく間違っています。
× <li><a class="current">hoge</a></li>
○ <li><a href="#" class="current">hoge</a></li>
でした;
何もクラス名が付いていないa要素に
class="current"を追加する方法という趣旨の質問でした。
typoとか…俺アホス
652Name_Not_Found:2008/05/17(土) 23:16:36 ID:???
>>651
何らかの方法で取得したidやクラス名を設定したいエレメントをelmとすると、
elm.id = 'current'; // idの場合
elm.className = 'current'; // クラス名の場合

ただclassNameの場合には、空白区切りで複数指定が可能(elm.className='foo bar'など)なので、
そのようなケースでは、単純に代入するだけでは駄目だけれど。
653642:2008/05/17(土) 23:32:56 ID:???
>>652
ありがとうございます。取得ができれば追加することはできるということですね。

いまさらですがひょっとしてこの要素は
取得する方法が無いのでしょうか
654Name_Not_Found:2008/05/18(日) 01:15:13 ID:wvZc+6F1
addEventListenerでmousedownをイベント追加しているのですが、反応が鈍いのです。
というのも何回もかちかちマウスをおさなければ反応しません。
ただ、必ず一度目は反応します。すごく不思議な現象なのですが教えてください。
他にループさせたり、複雑な処理はおこなっていません。
655Name_Not_Found:2008/05/18(日) 01:16:25 ID:???
↑ちなみにgreasemonkeyです。
656Name_Not_Found:2008/05/18(日) 01:30:18 ID:???
getElementByIdを使わずfirstChildを使えば解決しました。
理由はわかりません。
657Name_Not_Found:2008/05/18(日) 01:30:34 ID:???
つ Firebug
658Name_Not_Found:2008/05/18(日) 02:05:59 ID:???
>>653
このスレッド的な回答は "FAQ A13 読め" となる.

本来これで十分なはずだけど, 蛇足:
homepage2.nifty.com/alter/samples/table_background2/exam.html
(質問とは無関係なようだが "こんなこともできます" というサンプル)
659Name_Not_Found:2008/05/18(日) 02:44:48 ID:???
そのサンプルとやらの問題点が、まさに>>542からの流れだったんだがな。
660Name_Not_Found:2008/05/18(日) 04:02:25 ID:???
>>658
そこまでして他人との接点が欲しいなら、
安いPCでも買って無料のMMORPGでもやったらどうかと本気で思うよ。
お仲間のニートも大量にいるようだし。
661Name_Not_Found:2008/05/18(日) 06:22:45 ID:???
>>659
ここを覗いては いるけど流れまでは掴んでない.

>>660
お邪魔しました (ここは基本的に ROM 專)
(というか, 話題に ついていけない)

"安い PC" については現時点の PC OS の いずれにも不満なので,
(よく知らないけど製造元の御都合の塊のように思えてならない)
むしろ "debian" install を目標としてます. (しかし先に進めず)

思わず乱入しただけなので ROM 專 に戻りますだ.
662Name_Not_Found:2008/05/18(日) 09:03:00 ID:HNQeYZGh
よく変数名に使われる「str」ってなんですか?
663Name_Not_Found:2008/05/18(日) 09:07:52 ID:???
string
664Name_Not_Found:2008/05/18(日) 09:08:38 ID:???
strength
665Name_Not_Found:2008/05/18(日) 10:03:10 ID:???
>>662
そんなもの正解なんかないだろ
666625:2008/05/18(日) 11:18:16 ID:???
>>643
お返事ありがとうございます。
しかしなぜか「1. $(".load").html()で取得したデータをグローバル変数に
格納する。」ができません。ただ、調べていた最中に知らなかったこと
(JSONとか)が出てきたので、根本的に構成を考え直したいと思います。
667Name_Not_Found:2008/05/18(日) 15:22:45 ID:???
>>665
ハンガリアン記法云々では無いが、
ある程度共通認識として通用する名前なら、それを踏襲するのは悪い事じゃないけどね。
変数名として、オブジェクトならobjだとか、エレメントならel,elemなど。
668Name_Not_Found:2008/05/18(日) 16:08:55 ID:???
んなら、hairetuだとかninzuuだとかmojietuがいいでない?
669Name_Not_Found:2008/05/18(日) 18:38:43 ID:???
変数名が丁寧につけられたソースはそれがコメントの代役を果たしてくれて読みやすい
逆に自分のコードでもその辺を適当にしてたり無駄なコメントをゴテゴテ付けてたりすると後でちょっと泣く
書いてる最中は勢いがいいからそういうことを忘れやすいけど、長く保存するコードは特に気を付けたい、
というより、お願いだからまともな名前を付けてあげて><
670Name_Not_Found:2008/05/18(日) 18:59:05 ID:???
ハンガリアンだとちょっと変数名長くなるよな。
変数名の長さは、JSファイルが大きくなることでのロード時間が延びることと
処理系によっては、もしかしたら、実行時間にも影響与えるかも。
なので、strXXじゃなくsXXにしてる。
671Name_Not_Found:2008/05/18(日) 19:13:33 ID:???
それはないわ
672Name_Not_Found:2008/05/18(日) 19:18:00 ID:???
ただの貧乏性だろw
673Name_Not_Found:2008/05/18(日) 19:34:42 ID:???
contentEditableとかdesignModeを使用していない
自作のエディタの実装ってどれぐらいある?
674Name_Not_Found:2008/05/18(日) 19:45:02 ID:???
すいません質問です。

下記の『妖怪大戦争』のサイトのようにenterから入ってフラッシュのページを固定画面で
出したいと思っています。

ttp://yokai-movie.com/index.html
(妖怪大戦争)


調べてみると、

<script type="text/javascript">
function changesize(){
window.resizeTo(650,410);
}
window.onload=changesize;
window.onresize=changesize;
</script>

上記の記述でウィンドウサイズを固定できるようですが、ブラウザ上部分のボタンや
アドレスなどのバーの高さも含めてしまうめ、肝心のswfファイルがそれに合わせて
切れてしまいます。

上記以外で、よい方法がないでしょうか?
675Name_Not_Found:2008/05/18(日) 19:46:07 ID:???
IEのメモリーリークのせいで、
無名関数やクロージャーが使いづらくなっている状況について、
JavaScript言語としても対策が打てるんじゃないかなと思うけど、
何かやってるか知ってる人いますか?
676Name_Not_Found:2008/05/18(日) 19:52:17 ID:???
いまどき、resizeToが効くブラウザって少なくないですか。
IE6はOKだろうけど、タブブラウザが標準になってるからね。
効くようにするためにwindow.openしたら今度はポップアップブロックに引っ掛かるし。
677Name_Not_Found:2008/05/18(日) 20:03:48 ID:???
IE7で以下のような結果が出る。これなんで?

document.body == document //false
document.body >= document //true
document.body <= document //true
678Name_Not_Found:2008/05/18(日) 20:12:38 ID:???
>>677
なんで評価が不思議な結果のかここに書いてみると、その途中で
ハッと気付くから説明してみなよ。悪いことは言わない。
679674:2008/05/18(日) 20:15:43 ID:???
今ドリームウェーバーをいじってたらビヘイビアの機能でswfを指定したらいけました。
失礼致しました。
>>676
確かに微妙だと思うんですがお願いされてしまったもので…。
680Name_Not_Found:2008/05/18(日) 20:20:34 ID:???
>>670-672
こんなスレが立ってるよ。

【IT】重いウェブサービス…ボトルネックはブラウザー?…IE8、Firefoxなどの最新ブラウザ比較 [08/05/17]
http://news24.2ch.net/test/read.cgi/bizplus/1211085228/l50

|その原因は、いわゆる「Ajax」などと呼ばれる最近のJavaScriptの流行にある。
681Name_Not_Found:2008/05/18(日) 20:40:08 ID:???
>>678
む、ってことは、
>=とかの場合にはtoString変換がかかって比較されてたりするの?
682Name_Not_Found:2008/05/18(日) 20:48:29 ID:???
>>680
残念ながら、SunSpiderのベンチって
>>670に上がってるようなものは測定しないんだよな。
683Name_Not_Found:2008/05/18(日) 21:19:47 ID:???
>>680
そのスレがこの流れとどう関係あるのか
684Name_Not_Found:2008/05/18(日) 23:22:09 ID:???
さっぱりわからん
685Name_Not_Found:2008/05/19(月) 01:18:42 ID:???
>>681
a <= bとかa >= bはaとbがオブジェクトだったら
それをプリミティブ値に変換してから比較するので
document.body >= documentもdocument.body <= documentもtrueということは
IEのDOMオブジェクトはプリミティブ値が全部同じ値なんでしょう

valueOf()やtoString()を書き換えても比較の結果が変化しないようなので
他の所でプリミティブ値を算出しているんじゃないですかね
686Name_Not_Found:2008/05/19(月) 11:35:39 ID:???
実用レベルの話をすれば、Dateの比較には重宝するということだ。
あと言うまでもなくStringの比較にも重宝する。
これらの利便性を維持しつつ、ゴタクを並べて整理されたのが、ECMAScript後付仕様ということだ。
687Name_Not_Found:2008/05/19(月) 11:51:58 ID:jXVbhV0c
JavaScriptを勉強したいのである人に相談したところ、prototype.jsという
ものをしっかりマスターしてくれということでした。それでやろうと思うの
ですが、とほほに載っていないことがたくさん出てくるんですが新しい書き
方なのでしょうか。prototype.jsは最新のJavaScriptと思ってよいのでしょ
うか。
688Name_Not_Found:2008/05/19(月) 12:27:45 ID:???
>>687
大きく違う!

prototype.jsはAjaxライブラリ。

JavaScriptで凝ったことがしたい時に、ブラウザの差異などをAjaxライブラリが吸収して、
よりプログラミングしやすい環境を提供してくれるJavaScriptプログラムの集まり
689Name_Not_Found:2008/05/19(月) 12:32:19 ID:???
>>687
ライブラリのおまじないに浸るのも悪くないけど、まったくの入門者ならまずは>>1の必読ガイドを熟読、
余裕があればECMAも読んで理解して使う。
ライブラリの使い方はソース読め。読めないうちはリファレンスでおまじない。
今世界中で流行っててアツイのはjQuery。
690Name_Not_Found:2008/05/19(月) 12:33:14 ID:???
>>688
釣れますか?
691Name_Not_Found:2008/05/19(月) 13:00:03 ID:???
>>687
業務で使うというなら別だけど、
JavaScriptを勉強しようという人間にPrototype.jsをやれというのも妙な話だね。
利用者も多く他のFrameworkとの共存も考えられているJQueryか、
ソースが洗練されて読みやすいMootoolsを勧めるよ。
692Name_Not_Found:2008/05/19(月) 15:39:17 ID:OckbCuCp
>>621
に付随した質問です。
最後の2行ですがなぜfirstchildにしたほうがいいのでしょう。
単純に速度面の問題からですか?
693Name_Not_Found:2008/05/19(月) 16:15:28 ID:???
<script type="text/javascript">
<!--
function ck(form){
if(form.way.value<1.5){
form.money.value=500+'円';
}
}
//-->
</script>
</head>
<body>
<form name="form">
<p>距離を入力してください<br>
<input type="text" name="way">(km)
  料金:<input type="text" name="money"></p>
<input type="button" name="check" value="料金チェック" onclick="ck(this.form)">
</form>
質問させて下さいm(_ _)m
距離を1km以下を入力すると500円と表示され、それ以降0.5km増える度に
100円が追加されるようにするにはどうしたらいいですか?
694Name_Not_Found:2008/05/19(月) 16:33:43 ID:???
>>693
どうも疑問なのだが、1.2kmの場合は1kmが500円、それから
0.5km増えていないよね。だったら500円でいいの?
日本語で正確に仕様が記述できない奴にコードなんか書けないよ。
695Name_Not_Found:2008/05/19(月) 16:40:28 ID:???
>>694
あ、1.5km以下が500円でそれ以降0.5km増える度に100円プラスして
いきたかったんです。文書の見直しをしてなくてすみませんです;
696Name_Not_Found:2008/05/19(月) 17:10:26 ID:???
>>695
ほんっっっとにこいつは…
1.7kmの場合は1.5kmが500円で、その後0.2kmしか
増えていないから500円のままででいいのかボケ!
仕様を正確に日本語で書けるまでここに来ないで欲しい。
697Name_Not_Found:2008/05/19(月) 17:16:16 ID:???
>>696
そういう仕様だというんだからそのままでいいんじゃないの。
つまり1.5kmを越えたら2.0kmまでは降ろしてもらえないタクシーと
いうことで。
698Name_Not_Found:2008/05/19(月) 17:16:27 ID:???
>>693
function ck(form){
var fee = {'base':{'dist':1.5,'val':500},'adding':{'unit':0.5,'val':100}};
var sum = fee.base.val;
if ( form.way.value > fee.base.dist )
sum += Math.floor((form.way.value-fee.base.dist)/fee.adding.unit)*fee.adding.val;
form.money.value = sum+'円';
}

それと、>>694>>696は、
一般常識を知らないか、日本語の読解力に欠陥があるアホなのでスルーでおk。
699Name_Not_Found:2008/05/19(月) 17:28:51 ID:???
>>692
そうだね
あの場合firstChildが目的の要素であることが自明だから
文書全体からIDをもとに目的の要素を探すより効率が良い
700Name_Not_Found:2008/05/19(月) 18:05:50 ID:???
>>698
親切にソースまで書いてくれてありがとうございます!
やりたっかたのはこれです!本当に助かりましたm(_ _)m
このソースを見て勉強します!
701Name_Not_Found:2008/05/19(月) 21:31:19 ID:???
formの入力値が全角カナ・ひらがな・漢字以外が入っているか確認するJavaScriptを書いているのですが、なかなかうまくいきません。

if(str.match(/[^亜-煕あ-ゞァ-ヶ]+/){
   ひらがなカナ漢字以外が入ってる処理
}else{
入ってない処理
}

という感じで処理を分けたんですが、「答え」という文字を入力してもif文が反応して困っています。

どのような原因が考えられるのでしょうか?
702Name_Not_Found:2008/05/19(月) 22:18:05 ID:???
>>701
IMEパッド 文字一覧 unicode で範囲を調べなおせドアホ。
どうでもいいがおれならいちおう\uXXXX形式で書くがな。
あとしょうもないことだが1文字でもあったらという条件なら+は要らんだろボケ。
703701:2008/05/19(月) 22:46:12 ID:???
>>702
なるほど、調べなおしてみて判りました。
Shift-JISとUnicodeの並びが違うので漢字が網羅できていないのですね。

第二水準まであれば十分だと思って亜-煕としたのですが、Unicodeではそのような分別は無さそうですので、Unicodeの上から下まで網羅してしまいたいと思います。

ありがとうございました。
704Name_Not_Found:2008/05/19(月) 22:50:08 ID:OckbCuCp
またまたgreasemonkey関係の質問で申し訳ないです。
greasemonkeyではページが読み込むごとに実行されますが、問題があります。
フレームページのときです。
フレームのメインページのURLを保持しつつ、HTMLの操作はフレームの、ウィンドウが大きいほうのページでやりたいと考えています。
location.hrefでそのページのURLは取得できますが、フレームの親のURLはなんらかの方法で取得できますか?
どのようなアイデアが考えられますか?
ご教授くださいませ。
705Name_Not_Found:2008/05/19(月) 22:53:11 ID:???
ページ内のリンクをクリックしたら、そのクリックしたリンクのURLを
アラートで表示しようとしているのですが、下のようにやってうまくいきません。

<script type="text/javascript">
<!--
 //ページ構築後に設定
 window.onload = function() {
  var anchors = document.getElementsByTagName("a");

  //要素にonclickイベントをセットする
  for (var i = 0; i < anchors.length; i++) {
   var anchor = anchors[i];
   var url = anchors[i].href;
   anchor.onclick = function() {alert(url)};
  }
 };
// -->
</script>

実行するとすべてのリンクに、一番最後のリンクのURLが表示されてしまいました。
何故なのでしょうか?
706Name_Not_Found:2008/05/19(月) 23:07:20 ID:???
質問させていただきます。
当方HP内に<object>を使用し、メディアプレイヤーを貼り付けております。
以下はその<object>です。

<object id="MPlayer" width="450" height="350" vspace = 110
classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">
<param name="URL" value="" />
<param name="ShowControls" value="true" />
</object>

 このようなオブジェクトを作成したのですが、スクロールをすると、
このオブジェクトが画面外に出てしまいます。
そこで、常にオブジェクトの位置を固定させる方法は無いものかと、
色々なサイトを見て回ったのですが、そのような情報はでてきませんでした。

上記のような<object> 〜 </object>を使用しない、通常の
<input type="Submit" name="TOUROKU" value="テスト" >
のようなものであれば、位置を固定させるclassを使うことはできるのですが、
<object> 〜 </object>では、このclassを使うこともできず困っております。

良い方法があれば、ご教授いただけないでしょうか
707Name_Not_Found:2008/05/19(月) 23:26:38 ID:???
>>706
<input>
<object>
両方の実例を貼るかアップしろ
708Name_Not_Found:2008/05/19(月) 23:27:54 ID:???
>>704
unsafeWindow.top.location.href とかなんとかでできそうなきがするが
709Name_Not_Found:2008/05/19(月) 23:44:22 ID:???
>>705
... =  function (url) {return function () {alert(url);};}(url);
とすればできるが、
 1. ドンピシャでメモリーリークパターン。
 2. A要素オブジェクトの順番・数が変わったらパー。
という問題がある。

基本(というか俺が押し付けているだけの基本だが)に帰れ。
 1. バブルするなら、アホ外人が俗に言うイベントデリゲーション。
 2. バブルしないなら、HTMLのイベント属性。
710Name_Not_Found:2008/05/19(月) 23:46:22 ID:???
>>709 の >A要素オブジェクトの順番・数が変わったらパー。
は間違い。変数 i じゃないな。
711Name_Not_Found:2008/05/19(月) 23:54:52 ID:???
>>707
<script type="text/javascript" src="Hidiv.js"></script>
と設定をした状態で、

うまくいくほうは、(INPUTではありませんでした。スミマセン)
<DIV style="position:absolute;top:150;left:20;color:WHITE;font-size:13px;" class="divfixed:top"> 【日時】 </DIV>
です。
サンプルを下記に示します。
ttp://himajin.moo.jp/freejava/hidiv/hidiv.html
このサイトの"縦方向に固定"というのが私がやりたいことです。

<object>のほうは、先ほどもかきましたが、
<object id="MPlayer" width="450" height="350" vspace = 110
classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">
<param name="URL" value="" />
<param name="ShowControls" value="true" />
</object>
となりますが、どこで設定をしたらよいのかがわからない状態です。
712Name_Not_Found:2008/05/20(火) 00:16:57 ID:???
>>708
調べてみるともとからページに用意されている変数を参照できるものだとわかりました。
ただ、これをどのように利用すればよいかわかりません。
質問ばかりで申し訳ないですが教えてください。
713Name_Not_Found:2008/05/20(火) 00:19:31 ID:???
>>705>>709>>710
this使えよ
714Name_Not_Found:2008/05/20(火) 00:41:14 ID:???
>>705
横から質問なんだけど、最後のURLのリンクが出てしまうってなぜなの?
anchor.onclick = function() {alert(url)}
のfunctionが作られるのはonclickが実行された時ってこと?
715Name_Not_Found:2008/05/20(火) 01:23:48 ID:???
>>714
window.onload()は1回しか実行されてないから、
そのローカル変数であるurlも1つしかないんだな。
クロージャで調べるとよろし。
716705:2008/05/20(火) 01:46:54 ID:???
>>713に指摘してもらったthisでやったらいけました。
こんな感じで。

<script type="text/javascript">
<!--
 //ページ構築後に設定
 window.onload = function() {
  var anchors = document.getElementsByTagName("a");

  //要素にonclickイベントをセットする
  for (var i = 0; i < anchors.length; i++) {
   var anchor = anchors[i];
   anchor.onclick = function() {alert(this.href)};
  }
 };
// -->
</script>

window.onload()は確かに1回しか呼ばれないんですが、関数の中でfor文をまわすことで
できないんでしょうか? 変数 i がいけないのか、よく分からないです。
717Name_Not_Found:2008/05/20(火) 01:52:52 ID:???
変数をfunctionで包んでも値がコピーされるわけじゃないから。
スコープ クロージャ とかでグーグルしる
718Name_Not_Found:2008/05/20(火) 02:12:42 ID:R251vqgJ
質問です。xp explorer6.0
highslideを入れたいのですが、
画像をクリックすると、
カーソルが砂時計になり、画像の上にloadingと出て、何も起こりません。

<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=Shift-js" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link href="highslide/highslide.css" rel="stylesheet" type="text/css" media="screen"/>
<script type="text/javascript" src="highslide/highslide.js">
hs.showCredits=false;
hs.graphicsDir = "home.files/highslide/graphics/';
hs.outlineType = 'rounded-white';
</script></head>
<body>
<a href="b00.jpg" class="highslide" onclick="return hs.expand(this)" onkeypress="return hs.expand(this)">
<img src="b00s.jpg" border="1" id="00"></a>
</BODY></HTML>

上記ソースで、パス以外で何か足りないもの間違えていることありましたら教えていただきたいですm(_ _)m
719Name_Not_Found:2008/05/20(火) 03:00:10 ID:???
>>713
今更何を薦めているのかね。5年以上タイムスリップした気分だよ。
アホ外人が俗に言うイベントデリゲーションを使うべきだ。
currentTargetたるthisを使おうとするからメモリーリークパターンにはまる。

だいたい、リンクをロード時に総なめ?
しかもクリックして使われるのは1つだけと予想されるのに?
リンクなんて、当たり前のように100個1000個あるだろう。
ロード中を示すブラウザ右下のバーが消えないのは気持ちいいものではない。

黙って俺に従え。オマエラとは年季も実力も違いすぎる。
バブルするイベントタイプでは、アホ外人が俗に言うイベントデリゲーションを使え。
720Name_Not_Found:2008/05/20(火) 04:42:51 ID:???
>>719
this はリークしねーよ
真ん中は同意
推めるならアホアホ言うなw
721Name_Not_Found:2008/05/20(火) 04:47:28 ID:???
デリゲーション言うとアホなん?
722Name_Not_Found:2008/05/20(火) 04:59:41 ID:???
しらんねん
723Name_Not_Found:2008/05/20(火) 05:35:07 ID:???
>>719
残念ながらお馬鹿がアホな文章で正論を吐いても説得力に欠けるよ。

a. 旧来のタグ埋め込みなどのelem.onclick=function...形式。
b. イベントリスナ(addEventListener)を利用し、イベント対象となる個々のエレメントにそれぞれのイベントハンドラを設定する。
c. イベント対象となる複数のエレメントの親エレメントでイベントを監視する。
簡単に言えばc.がイベントデリゲーションと呼ばれる手法。

例えばメニュー(ul#menu)の項目(li)で、clickによりその直下の子エレメント(li>ul.subMenu)のstyle.displayを切り替える場合に、
b.では対象となる全てのliにli.addEventListener('click',function...)などとしなければならないが、
c.の場合にはul#menuだけにイベントリスナを設定し、
一つのイベントハンドラで全て処理するようにする。

Event Delegation
ttp://cherny.com/webdev/70/javascript-event-delegation-and-event-hanlders
724Name_Not_Found:2008/05/20(火) 05:56:46 ID:YqQnDQ/Z
何いってるのか、わからん
725Name_Not_Found:2008/05/20(火) 06:01:45 ID:???
そうかいな
726Name_Not_Found:2008/05/20(火) 06:12:06 ID:???
イベントリスナとイベントハンドラの違いを語ってくれ
727Name_Not_Found:2008/05/20(火) 07:23:01 ID:???
>>723
理解したthx。
728Name_Not_Found:2008/05/20(火) 22:01:55 ID:???
>>673
これ誰か知りませんか?
例えば、TinyMCEなどはexecCommandをばりばり使っています。そういうのは不要です。
「比較的」execCommandなどに頼らないものとして、YahooUIのeditorがあるのは知っています。
YahooUIのeditorに近いか、またはブラウザ依存の機能を比較的使用していないエディタとして他にご存じの方いますか?
729Name_Not_Found:2008/05/20(火) 22:05:46 ID:???
>>685
プリミティブ値ってあんまり聞いたことないな。
よく分からないけど、
要はブラウザの中で何かの値で比較しているけど、その何かは不明で、
JSからでも設定したりすることは出来ないってことでおk?
730Name_Not_Found:2008/05/20(火) 22:08:41 ID:???
>>726
イベントリスナはaddEventListenerのことで、
イベントハンドラはaddEventListenerの引数に渡す関数のことかな?
ただ、イベントリスナというと関数のことを指してることも多いよね。
731Name_Not_Found:2008/05/20(火) 22:41:50 ID:???
同じjavascriptを使っているのに、自分のページではポップアップブロック表示が出てうまく動作しない、
違う人のページは開いてもポップアップブロックが出ないし、
正常に動作する。。。なんでですか??
732Name_Not_Found:2008/05/20(火) 22:44:42 ID:???
JavaScript中・高レベルスレって欲しいと思いますか?
でもこういうのって2chじゃ例外なく廃れるんだっけ。
733Name_Not_Found:2008/05/20(火) 22:45:26 ID:???
>>731
IEのバージョンとセキュリティ設定&ポップアップブロック設定&インターネットゾーン確認
734Name_Not_Found:2008/05/20(火) 22:47:54 ID:???
そのまんま、傾聴者と操作者でいいと思うが
俺の中のイメージでは 傾聴者 ⊃ 操作者
735Name_Not_Found:2008/05/20(火) 23:35:40 ID:???
>>732
>JavaScript中・高レベルスレ
ム板のECMAスレでいいんじゃん?
なぜかwebprog板にもあるしな
736Name_Not_Found:2008/05/20(火) 23:36:01 ID:???
>>732
このスレが初心者に優しくないスレ→中・高レベルスレ
なんだよね。それでも大したレベルじゃないと言われれば
そうだねという他ないけどね。そのおかげで64スレも続いて
いるとも言えるわけで。
737Name_Not_Found:2008/05/20(火) 23:36:20 ID:7DaotzHY
>>730
イベントリスナー ・・・ addEventListener等
イベントハンドラ ・・・ on○○○(onclick,onfocus等)

多分HTMLに書き込むかDOM操作かの違いだと思うよ。
738Name_Not_Found:2008/05/20(火) 23:43:51 ID:???
>>729
プリミティブ値はオブジェクトではない数値や文字列などのことです

IEの場合はそうみたいですね
ただDOMオブジェクトのようなオブジェクトのプリミティブ値への変換は
実装依存でも良いので、それはブラウザによって変わってくるでしょう

OperaやSafariなんかだと
DOMオブジェクトのvalueOf()やtoString()を書き換えることで通常のオブジェクトと同じように
a <= bやa >= bの結果を変えることが出来るようです
739Name_Not_Found:2008/05/21(水) 00:02:20 ID:???
ついでに、element同士の==と===で動作が分かれるブラウザある?
740Name_Not_Found:2008/05/21(水) 00:09:02 ID:???
関数式と関数定義の違いによってJavaScriptの処理時間が変わったりする?
関数式の方がスコープの保持と代入文にかかるコストがかかる分
ちょっと重くなるとおもってるんだけど、初期定義のときだけであって、
それ以外の関数呼び出しなどでは変わってこないと思ってるんだが、どうだろう。
741Name_Not_Found:2008/05/21(水) 00:19:25 ID:???
>>737
それなら>>723は意味不明になるな
742Name_Not_Found:2008/05/21(水) 00:24:37 ID:???
EventListener実装オブジェクトとEventListener#handleEvent()かね。よぉわからん。
743Name_Not_Found:2008/05/21(水) 00:59:56 ID:???
一般的に、実際にイベントを処理する関数などを、
イベントハンドラやイベントリスナーと呼ぶ。

なので、本来の用法ではaddEventListenerやonclickなどで登録する関数自体がイベントリスナーだけど、
エレメントとイベント(clickやmouseoverなど)とイベントを処理する関数を結びつける処理をイベントリスナーと呼び、
実際に処理する関数の事はイベントハンドラと呼んで区別する場合もあるね。
744Name_Not_Found:2008/05/21(水) 01:51:43 ID:???
DOM規定では、Javaみたいに関数を直接オブジェクトとして扱えない言語のために、
イベントハンドラhandleEvent()をメソッドに持つオブジェクトをイベントリスナとしている。
イベント発生時にイベントリスナがhandleEvent()を呼び出す。

だがECMAScript系言語では関数をオブジェクトとして扱えるので、
addEventListener()に関数オブジェクトをそのまま渡せる。
なので、イベントリスナ=イベントハンドラと解釈してほぼ問題ない。
ちなみにGeckoは昔から、Safari、Operaは最近のバージョンから、
JavaのようにaddEventListener()にhandleEvent()を持つObjectを与えても動く。
この場合はObjectがイベントリスナ、handleEvent()がイベントハンドラということになる。
イベントハンドラ内のthisがノードではなくObjectを指すので、意外に使い勝手が良い。

DOM EventsをもとにしたXML Eventsでは、
observer要素とhandler要素を紐付けるものをlistener要素としている。
これは>>743の解釈に近い。

結局、仕様ですら用語がぐだぐだだから気にするな。
745Name_Not_Found:2008/05/21(水) 02:11:02 ID:???
JavaScript の Array の要素数の取得方法がよくわかりません。

var ar = new Array();
ar["テスト"] = "aaaa0";

alert(ar.length); <- 0と表示される
alert(ar["テスト"]); <- aaa0 が表示される


上記の場合は、要素数が1になるような気がするのですが 0になってしまいます。
なぜなのでしょうか?

また、この場合に1を取得する方法はありますか?

動作環境はIE7になります。

746Name_Not_Found:2008/05/21(水) 02:21:09 ID:???
配列が空だから0
1を取得する方法より設計を見直すのが先
747Name_Not_Found:2008/05/21(水) 03:42:36 ID:???
全角は使わない方が・・・
748Name_Not_Found:2008/05/21(水) 04:00:15 ID:???
リンクをクリックして、ファイルのダウンロードのダイアログが出る際に
リンクのファイル名と異なるファイル名にすることは可能でしょうか

例えば、TEST.zip のリンクをクリックした際に
ブラウザでダウンロードの確認ダイアログが出ますが、 TEST.zip でなく
『 ファイルを保存しますか? DATA.zip 』
と名前を変えて。ダウンロード確認ダイアログを出すような感じです

よろしくお願い致します。
749Name_Not_Found:2008/05/21(水) 07:18:33 ID:???
つ CGI
750Name_Not_Found:2008/05/21(水) 08:14:36 ID:???
>>749
ありがとうございます、
やっぱり CGI 使わないと実現できないっぽいですね。。。
751745:2008/05/21(水) 09:12:51 ID:???
>>746 >>747

Cの stl にある map みたいな事ができないかなと思ったのですが、
Arrayではできないのでしょうか?

std::map<CString, CString> hoge;

for (std::map<CString, CString>::itrator it = hoge.begin(); it != hoge.end(); it++)
{
it->first;
it->second;
}
752Name_Not_Found:2008/05/21(水) 09:18:39 ID:???
>>751
つ ハッシュ
列挙はfor/inで出来るし。
753Name_Not_Found:2008/05/21(水) 13:53:18 ID:cyE7aUGz
greasemonkeyでパネルをdiv使って表示しています
パネルの中にタグ書いてるんですがその内容が元ページのcssを反映してしまいデザインが統一されません。
パネルのなかだけ全てのどんなスタイルシートも無効にすることはできますか?
教えてください。
754Name_Not_Found:2008/05/21(水) 13:55:17 ID:???
>>753
できません。iframeを使うか、すべてのCSSプロパティを自前で
指定し直すか。
755Name_Not_Found:2008/05/21(水) 14:07:28 ID:cyE7aUGz
そうですか即レスありがとうございます
ではdivのスタイルのbottomを0以外に設定すると表示されなくなるページがあるのですが
これはどういったcssが考えられますか?
756Name_Not_Found:2008/05/21(水) 14:23:34 ID:???
>>755
「では」時点でスレちがい。
757Name_Not_Found:2008/05/21(水) 14:38:39 ID:cyE7aUGz
そうでした
申し訳ありませんでした
758Name_Not_Found:2008/05/21(水) 22:28:08 ID:???
初心者の横やりレスであってるかわからないですが、
divにidをつけて、cssはidごとに指定してやるやりかたではどうですか
759Name_Not_Found:2008/05/21(水) 23:31:53 ID:???
>>751-752
map程度は組み込みでサポートしてる。
同じ処理をJSで書いたらこんな感じ。

var hoge = {}; //[]でも可。
for(var prop in hoge)
{
prop; //it->first;
hoge[prop]; //it->second;
}

になるかな。ただ、>>634みたいなことを注意する必要があると思う。

map::size()の代わりにlengthを使おうとしているなら、
Arrayも上記の例もそのような機能はない。
いちいちループまわして、個数数えるしかない。
それがいやなら、自作のハッシュクラスを作る必要がある
(事実prototype.jsは自作版がある。正直微妙だけど。)
760Name_Not_Found:2008/05/22(木) 00:06:02 ID:???
質問させてください。
下記のようなHTMLで、メディアプレイヤーをHP内に埋め込みました。

<object id="MPlayer" width="450" height="350" vspace = 110
classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6" CODEBASE="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" standby="Loading Microsoft Windows Media Player components..." type="application/x-oleobject">
<param name="URL" value="" />
<param name="ShowControls" value="true" />
</object>


この"MPlayer"のページ内の位置を、ボタンを押すことで、徐々に
下に下げていくようなjavascriptを作成したいのですが、
MPlayer.style.left=○○;
という記述をしても、動作してくれません。

objectの位置をjavascriptで指定してやることはできなのでしょうか。
ご存知の方がいらっしゃれば、ご教授くださいませんでしょうか。
761Name_Not_Found:2008/05/22(木) 00:10:19 ID:???
>>760
CSSの問題。leftやtopはposition: absoluteじゃないと効かない。

var el = $("MPlayer");
el.style.position = "absolute";
count = 10;
setInterval(function(){ el.style.top = (count++) + "px"}, 100);
762Name_Not_Found:2008/05/22(木) 00:38:46 ID:???
無神経に$を使う奴はECMA262の7.2を読んだことも、
それを前提にしたコンパイラとかドキュメント生成とかも
考えたことがないんだろうな

>>706,>>760はマルチ
763Name_Not_Found:2008/05/22(木) 01:09:07 ID:???
$は省略記法みたいなもんだがな
764Name_Not_Found:2008/05/22(木) 01:13:28 ID:???
>>761
回答ありがとうございます。試してみます。

>>762
確かにマルチなのですが、向こうの板ではスルーされてしまったので
こっちに書かせてもらいました。
本来であれば$を使わないほうが良いということなんですかね
765Name_Not_Found:2008/05/22(木) 01:41:19 ID:???
>>761
もう一つご質問させていただいてもよろしいでしょうか
先ほどの質問の理由が、「画面をスクロールしても、メディアプレイヤーの
表示位置を変えないようにしたい」からです。
そこで、スクロールするごとに、少しずつメディアプレイヤーオブジェクトの
位置を下に下げていってやればよいかと思ったのですが、それだとカクカク
してしまいます。

検索をして調べたところ、
position: fixed;
を使用すればよいという情報はあったのですが、
el.style.position = "fixed";
とやっても効果はありませんでした。
なんとか良い方法はないものでしょうか
766Name_Not_Found:2008/05/22(木) 02:16:30 ID:???
>>765
「fixed position」とかでぐぐったら、
IE6だとCSSは効かないけど、setExpresionかbehavior(*.htc)ならどうにかなるとあった。
試してないが。
767Name_Not_Found:2008/05/22(木) 02:26:20 ID:???
>>762
ECMA262の7.2を読んだが何が問題なのかわからなかった。
参考までに教えてくれないか?
768Name_Not_Found:2008/05/22(木) 02:59:45 ID:???
>>762は7.6の間違いではないかとエスパーしてみる。
769Name_Not_Found:2008/05/22(木) 03:13:28 ID:???
シーッww

誰でも勘付くことなんだから、そこはもうちょい引っ張れよw
770Name_Not_Found:2008/05/22(木) 15:03:24 ID:sCQbTBD7
divの背景色をidを指定して変えたいのですが、

document.getElementById("aaa").style.backgroundColor = red;

で変わりません。ちなみに、<div id='aaa'> </div>
としています。

初心者の質問かもしれませんが、どうか教えてください。
771Name_Not_Found:2008/05/22(木) 15:38:45 ID:???
>>770
その「red」という変数には何が入っているの?
もしかして「'red'」の間違いとか?
772Name_Not_Found:2008/05/22(木) 15:41:45 ID:sCQbTBD7
すいません、書き間違えました。

document.getElementById("aaa").style.backgroundColor = 'red';

です。
773Name_Not_Found:2008/05/22(木) 15:44:43 ID:sCQbTBD7
'red'にすることで、うまくいきました!
ありがとうございます。

もうひとつ質問があるのですが、
"aaa"の部分を変数にしたいのですが、
document.getElementById(id).style.backgroundColor = 'red';
ではエラーになってしまいます。

初心者ですいません。どうか教えてください。よろしくお願いします。
774Name_Not_Found:2008/05/22(木) 15:51:13 ID:sCQbTBD7
functionの中にあるからエラーになっている感じです。
functionの外でvar id=""としているのですが、
なぜなのでしょうか?
alert(id);とすると、ちゃんとidは入っているようなのですが、
document.getElementById(id).style.backgroundColor = 'red';
とするとエラーになります。
775Name_Not_Found:2008/05/22(木) 15:51:22 ID:???
>>773
3)初心者という言葉は危険なので使わない方がよい。
 初心者を言い訳に自力で調べない/考えない奴が最悪に嫌われる。
4)自分で調べたこと/試したこときちんと書く(調べもしない奴は最低)。
 ただ「動きません」「エラーです」は何も情報がないため嫌われる。
 エラーは「どの行で何のエラー」を書く(ブラウザをそのように設定すれ)。
 ブラウザの設定すらできんヤシはFFxのJavaScriptコンソールを使え!!!
 OS、ブラウザ、バージョン、うまく行かない条件を明記しエラー再現可能に。
776Name_Not_Found:2008/05/22(木) 15:51:50 ID:sCQbTBD7
idはfunctionの中で代入しています。
777Name_Not_Found:2008/05/22(木) 16:09:02 ID:sCQbTBD7
function put(obj) {
aaa=selid;
obj.style.backgroundColor=putColor;
selid=obj.id;
document.getElementById(aaa).style.backgroundColor =normalColor;
}
一度変数を別の変数に代入するとなぜかうまくいきました。これで、意図した内容は実現したのですが、エラーが出てしまいます。
778Name_Not_Found:2008/05/22(木) 16:54:37 ID:sCQbTBD7
nullの時も実行してしまうのでエラーがでたようでした。
ifを使って回避するとうまくいきました。

ありがとうございました。
779Name_Not_Found:2008/05/22(木) 17:30:09 ID:JvlMiVy4
よろしくお願いします。
親ウィンドウにボタンA、ボタンBがあり、
ボタンAまたはボタンBから子ウィンドウが呼び出されます。
このとき、子ウィンドウの方でどちらのボタンから呼び出されたかを
知りたいのですが、どうすればよいでしょうか?
780Name_Not_Found:2008/05/22(木) 18:16:11 ID:???
>>779
子ウィンドウにhiddenのINPUTを作って親からそこに識別文字列を
送ってやる。それを子側で読み取る。
781Name_Not_Found:2008/05/22(木) 19:02:10 ID:???
windowのプロパティでいいだろ
782779:2008/05/23(金) 12:44:28 ID:???
>>780,781
まだ試していませんが、ありがとうございます。
どちらが簡単か調査して、また来ます。
783Name_Not_Found:2008/05/23(金) 14:48:57 ID:???
どちらが簡単か調査ってw
>>781だよ。NN3でも確実にできていたわけだしw
784Name_Not_Found:2008/05/23(金) 15:31:00 ID:???
NN3 wwwWWWWWW
785779:2008/05/23(金) 15:53:41 ID:???
>>783
そんなこともよく分かってない素人なんです。。
案外あっさり作れましたけど、もっと良い方法があれば教えてください。

<html><head>
  <title>親</title>
  <script language="JavaScript">
  function subwin(elm){

   var str = elm.id;

   window.open('test_sub.html',str);

  }

 </script>
</head>
<body>
<input type="button" id="buttonA" name="buttonA" onclick="subwin(this)" value="ボタンA" >
<input type="button" id="buttonB" name="buttonB" onclick="subwin(this)" value="ボタンB">
</body></html>

(test_sub.html)
 window.onload=function (){
 alert(window.name);
 }
786Name_Not_Found:2008/05/23(金) 16:39:22 ID:???
>>785
window.nameで渡すとは、ポイントを押えているなw
ホストというかドメインが違っていても、確実に値を渡せるから。
787785:2008/05/23(金) 17:05:42 ID:???
>>786
いや、これ以外わからないからやってるだけなんですw
結果オーライなようでちょっと安心ですが、他の方法というのが気になります・・・

window.openはwindow.nameしか渡せませんよね?
open以外でも同じことをやれるということですか?
788Name_Not_Found:2008/05/23(金) 17:11:38 ID:???
>>786
JavaScriptがドメインを超えられるとは初めて聞いた。いつから仕様変更に
なったの?
789Name_Not_Found:2008/05/23(金) 17:19:06 ID:???
>>788
はあ?越えてないだろ。他ホスト(というかここではドメインというかそういうセグメント全てが無関係)の操作に関与していない。頭整理してこいボケ。
790Name_Not_Found:2008/05/23(金) 17:20:28 ID:???
>>787
トホホへでも行って勉強してきたら?質問以前に単にモノが
分かってない希ガス。
791Name_Not_Found:2008/05/23(金) 17:22:00 ID:???
>>789
>ドメインが違っていても、確実に値を渡せるから
792Name_Not_Found:2008/05/23(金) 17:28:26 ID:???
>>791
値は渡せる。
しかし、その先で、name = ??? と書いてあればそれで終了だ。

頭整理してこい低脳。
ほんと、JS終わってるな。window.name の使途なんて、俺だけでも何度か書いたぞ、このスレで。
誰でも知ってる基本だろ。
793Name_Not_Found:2008/05/23(金) 17:28:57 ID:???
うん。window.nameだけはドメイン超えて渡せるよ。
794Name_Not_Found:2008/05/23(金) 17:30:05 ID:???
つか window までならおっけーなんだな
便利べんり
795Name_Not_Found:2008/05/23(金) 17:30:39 ID:???
あれ、nameだけ?
796Name_Not_Found:2008/05/23(金) 19:06:51 ID:???
ドメイン越えでちょっといたずらしてみっか
797Name_Not_Found:2008/05/23(金) 19:17:27 ID:???
それよりコンストラクタを再定義してJSONを盗み(ry
798Name_Not_Found:2008/05/23(金) 19:54:24 ID:???
ん?window.nameを利用すればデータを
JavaScriptだけで受け渡し可能ってこと?
799Name_Not_Found:2008/05/23(金) 19:58:58 ID:???
>>798
そう。他のwindow.nameの利用法としてcookieの利用が禁止されているサイトでcookie代わりにするとか。

クロスドイメン通信法をまとめた記事があった。
ttp://d.hatena.ne.jp/nopnop/20080408/1207669947
800Name_Not_Found:2008/05/23(金) 21:14:39 ID:???
>>797
えーっと、それは、痛外人がほざく、自演前提の脆弱性なんだが、分かってるか馬鹿?
801Name_Not_Found:2008/05/23(金) 21:40:21 ID:???
>>799
そのうちすぐ出来なくなるよ。ドメインの外まで許す必要は何もない。
それは一種の脆弱性だ。
802Name_Not_Found:2008/05/23(金) 22:04:12 ID:gokaewxI
textareaを編集可能・編集不可能と切り替えたいのですが、
そういうライブラリがあれば教えて下さい
今はjqueryで、divとtextareaを置き換えてるのですが、
状態によって文字表示の具合が変わるのがいまいちです
803Name_Not_Found:2008/05/23(金) 22:04:55 ID:???
>>801
最近わざわざ新設された
XDomainRequestとかpostMessageがなくなると言ってる? んなわけない。
804Name_Not_Found:2008/05/23(金) 22:08:18 ID:???
>>802
disabled属性の切り替えとか?
805Name_Not_Found:2008/05/23(金) 22:28:50 ID:???
>>804
もとから属性あったんですね
ありがとうございました
806Name_Not_Found:2008/05/24(土) 10:35:54 ID:???
テキストボックスに漢字・かな・カナ・全角数字以外が入っているかチェックするスクリプトを作ったのですが、うまく動きません。

if(str.match(/[^一-龠ぁ-ヴァ-ヾ0-9]/)){
へんなの入ってるよー
}

という関数を作ったのですが、なぜかUnicodeの3095〜30a0にあるひらがなとカタカナの間にある文字にはmatch
807806:2008/05/24(土) 10:37:33 ID:t89PUxdH
途中送信してしまいました・・・以下続き

matchが反応しません。どこか間違った指定をしているのでしょうか
808Name_Not_Found:2008/05/24(土) 10:47:36 ID:???
809806:2008/05/24(土) 10:54:39 ID:???
>>808
一応そのレスを参考にIMEパッドのUnicode一覧から選択したんですが、うまくいかないのです。

追記:今見直してから気付きましたが、ぁ−ヴの部分はヴではなくう"(ひらがなのうに濁点)です。申し訳ないです…
810Name_Not_Found:2008/05/24(土) 11:04:14 ID:???
>>809
マルチバイトをASCIIに置き換えてみてはどうか
あと真偽値が欲しいだけなら reg.test な
811Name_Not_Found:2008/05/24(土) 13:15:25 ID:???
>>810
だからもう、治ってるだろ。
ぁ−ヴにしていたせいで、3095〜30a0もひっかかっちまったんだが、「う"」にすることで修正出来たと。
812Name_Not_Found:2008/05/24(土) 13:46:32 ID:???
809==811
813Name_Not_Found:2008/05/24(土) 18:48:44 ID:???
ようつべ見ようと思ったんですがJavaScriptがオフになってると言われて困ってます
パソコンにはぜんぜん詳しくないのでどうすればいいからないのです
誰でもいいのでJavaScriptをオンにする方法を教えてくださいお願いします
814Name_Not_Found:2008/05/24(土) 19:15:30 ID:???
>>813
このスレはそういうスレではない。そもそも制作板は
あんたの来るところではない。インターネット板へ行け。
815Name_Not_Found:2008/05/24(土) 19:18:47 ID:???
>>813
Yahoo!知恵袋 - ブラウザ、プラグインに関する質問
ttp://search.chiebukuro.yahoo.co.jp/dir/list/d2078297443/
816Name_Not_Found:2008/05/24(土) 21:17:30 ID:???
>>801
かわいそうになるくらい理解力が低いなおまえw
817Name_Not_Found:2008/05/24(土) 22:50:47 ID:wxX4+di8
フォームコントロール名と同じものをdomのidに設定しています
フォームコントロールが配列になるとき、名前に[]が含まれますが、
domのidに[]が含まれるのは文法的に正しくないようです(tidyに注意される)
domのidで、配列的なものを表現するには
どうしたらいいのでしょうか?
818Name_Not_Found:2008/05/24(土) 23:31:16 ID:???
>>817
何言ってんだかわかんないからソース出して。
819Name_Not_Found:2008/05/25(日) 03:49:51 ID:???
[] を含めなきゃいい
JavaScript となんの関連もない
820Name_Not_Found:2008/05/25(日) 07:33:38 ID:???
iframe で表示しているページになる メソッドを呼び出したいと思っています。

決めうちで書いた場合に以下のように書いた場合は、OnCancel という命令を
呼ぶことができました。

window.parent.Iframe0.OnCancel();


これをループでまわして呼ぶようにしたいのですが、どのように記述すれば
よいでしょうか?
821Name_Not_Found:2008/05/25(日) 08:32:45 ID:???
>>820
日本語でおk
822Name_Not_Found:2008/05/25(日) 09:10:37 ID:???
DOM要素をドラッグ&ドロップする方法はいくつかあると思いますが、一般的なアルゴリズムというか、
基本的な考え方を教えてください
823Name_Not_Found:2008/05/25(日) 11:54:20 ID:???
>>822
ググってソースみればよいのでは?
ソースみても分からない人間にアルゴリズムの説明をしても理解でき
るとは到底思えないし。
824Name_Not_Found:2008/05/25(日) 12:13:18 ID:???
>>823
わからないなら黙ってればいいと思うよ
825Name_Not_Found:2008/05/25(日) 12:16:06 ID:???
>>824
教えてもいいが態度が気に入らない。
826Name_Not_Found:2008/05/25(日) 12:32:01 ID:???
827Name_Not_Found:2008/05/25(日) 12:35:49 ID:???
でっていう
828Name_Not_Found:2008/05/25(日) 12:58:41 ID:???
基本的な考え方を文章で書くというのはなかなか難しい話だけど、
なんとかするとしたら、まず、誰かが「たたき台」を書かねばなるまい。

1.左ボタンを押したまま、マウス移動開始の瞬間に、
  カーソルの下にある要素から「ドラッグ元」を特定。
  「ドラッグ元」が移動可能だと判断したとき「ドラッグ開始」。

2.マウス移動中は必要があれば、マウスカーソルの形状を変えるなどの工夫をする。

3.左ボタンを離した時に、カーソルの下にある要素から「ドロップ先」を特定する。
  「ドロップ先」がドロップ可能だと判断出来たときは、対応する動作をさせる。
  ドロップ不可能だと判断した場合、ドロップしない。
829Name_Not_Found:2008/05/25(日) 13:06:41 ID:???
で、それをコードで書くとどうなりますか?
ってのが、次の質問かな?
830Name_Not_Found:2008/05/25(日) 13:07:49 ID:???
>>822
クチで説明しても分からんよね。こういうまとめサイト見た方が…
ttp://www.clipmarks.com/clipmark/4B4758A3-40A5-48FD-902A-D9F35A3FF904/
831820:2008/05/25(日) 13:11:58 ID:???
>>821

複数のページに OnCancel() という 命令を実装し、
一度にまとめて呼び出したいとおもっています。

以下のように iframe の ID を arrayID という 変数に保持して
呼び出したいのですが、どのように記述すれば良いかわかりません。

for (var n = 0; n < arrayID; n++)
{
  var id = arrayID[n];

/* ifarame の OnCancel() を呼び出す。*/
}


すみませんが、教えていただけませんか?
よろしくお願いします。
832Name_Not_Found:2008/05/25(日) 15:15:24 ID:???
>>820
FAQ >>3 のQ8/A8を100回読め。それで分からんのなら誰に
教わっても分からんと思うよ。つかFAQ読めない奴は来るな。
833Name_Not_Found:2008/05/25(日) 15:29:50 ID:???
>>832
わからないなら黙ってればいいと思うよ
834Name_Not_Found:2008/05/25(日) 15:32:27 ID:???
>>833
わからないなら黙っていればいいと思うよ。
835Name_Not_Found:2008/05/25(日) 15:36:42 ID:???
まぁ、なんでもFAQに結び付けるのもどうかと思うな。
836Name_Not_Found:2008/05/25(日) 15:41:37 ID:???
>>835
何いってんだ。FAQそのものだから言われてるに決まってるだろ。
837Name_Not_Found:2008/05/25(日) 15:44:09 ID:???
>>836
どこがだよw
FAQ8はform部品のことを言ってるが、>>831はiframeのことだろ。
838Name_Not_Found:2008/05/25(日) 15:46:01 ID:???
>>837
だからそうとしか思えない奴は教えても無駄だっての。
はい、以後スルーで。
839Name_Not_Found:2008/05/25(日) 15:59:27 ID:???
いちおうサービスで。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><title>???</title>
<script type="text/javascript">
function test() {
for(var i = 0; i < 4; ++i) {
window.frames['f'+i].location.href = 'http://www.yahoo.com';
}
}
</script>
</head><body>
<h1>Test</h1>
<button onclick="test()">Test</button><br>
<iframe name="f0" src="about:blank"></iframe>
<iframe name="f1" src="about:blank"></iframe>
<iframe name="f2" src="about:blank"></iframe>
<iframe name="f3" src="about:blank"></iframe>
</body></html>
840Name_Not_Found:2008/05/25(日) 16:00:56 ID:???
つまり、>>820がうまくいくというなら、
window.parent[id].OnCancel();
でうまくいくだろう。>>832はそう思ってるということか。
841Name_Not_Found:2008/05/25(日) 16:01:23 ID:???
>>831
for (var n = 0; n < arrayID; n++)
{
  var id = arrayID[n];

/* ifarame の OnCancel() を呼び出す。*/
  window.parent[id].OnCancel();
}
842Name_Not_Found:2008/05/25(日) 16:52:02 ID:???
以前、メディアプレイヤーの埋め込みについて質問させていただいたものです。

メディアプレイヤーについては、
document.MPlayer.Controls.Play();
にて現在ボタンによる再生が可能な状態になっているのですが、
指定したURL+指定ポートを開くにはどのようにやったらよろしいのでしょうか。

というのは、メディアプレイヤーを起動した状態で「ctrl+u」を押して
入力する情報と同様の情報をJAVASCRIPTにて与えてやりたいと思って
いるのですが、
document.MPlayer.URL=
にて、同様の入力値を与えてみても、ポート番号の指定で引っかかっているのか、
正常に動作しません。
ポート番号の指定はできないものでしょうか。
843822:2008/05/25(日) 16:55:28 ID:???
>>828
遅くなりましたがレスありがとうございます
やはりmousemoveとmouseup時にインスタンス内の環境を監視・操作するのが普通なんですね
参考になりました
844822:2008/05/25(日) 16:56:29 ID:???
>>828
遅くなりましたがレスありがとうございます
やはりmousemoveとmouseup時にインスタンス内の環境を監視・操作するのが普通なんですね
参考になりました
845Name_Not_Found:2008/05/25(日) 16:59:19 ID:???
>>842
http://ホスト:ポート番号/...
のようにURLに埋め込んでポート指定するんじゃ駄目なの?
846Name_Not_Found:2008/05/25(日) 17:07:57 ID:V7gQvpl9
テキストエリアでホイールなどを使ってスクロールをする場合
中途半端に文字が見切れた位置ではなく数行分ごとにピッタリ合わせるには
どうすればいいですか?
847Name_Not_Found:2008/05/25(日) 18:31:39 ID:???
XMLHttpRequestでテキストファイルの中身を取得しているのですが、
文字コードが違うのか文字化けします。
どのようにすれば解決できますか?
848828:2008/05/25(日) 18:33:37 ID:???
>>843
「1」については、「ドラッグ元」特定がmousedownのタイミングで
「ドラッグ開始」がmousemoveのタイミングがよいかもしれない。

>インスタンス内の環境を監視・操作するのが普通
現状はどのライブラリでもそうしているハズ。
だれか、ブラウザ側がこれについて改善する対策を打とうとしているかどうかご存じですか?
849Name_Not_Found:2008/05/25(日) 18:36:17 ID:???
850Name_Not_Found:2008/05/25(日) 18:41:04 ID:???
>>846
ブラウザの設定とかではなかったと思うので、
1行の縦サイズを決めるor求めて、自前でスクロール制御をすればいいと思う。
851Name_Not_Found:2008/05/25(日) 19:15:30 ID:???
>>849
サーバーからのレスポンスヘッダがどこにあるのかわかりません。
852Name_Not_Found:2008/05/25(日) 19:32:34 ID:???
仕方ねえな。一度しか言わないぞ。
まず>>6を見ろ。そこにMSDN Libraryのリンクがあるな?飛べ。
「DHTML Object」という項目を見つけたか?飛べ。
そこにXMLHttpRequestがあるな?飛べ。
Methodを見てみろ。お望みのものがあるな?よかったよかった。
使い方が分からない?説明に飛べ。例文までばっちりだ。
もう一人でできるな?さよなら。
853Name_Not_Found:2008/05/25(日) 19:43:04 ID:???
xmlhttp.setRequestHeader('Content-Type', 'text/html;charset=Shift_JIS');
とすると未定義のエラーとか言われるんですが・・・
854Name_Not_Found:2008/05/25(日) 19:53:01 ID:V7gQvpl9
>>850
サンクス。調べてみる
855Name_Not_Found:2008/05/25(日) 19:53:02 ID:3sa/tweh
URLを
http://up.pandoravote.net/index.php?id=000024137

http://up.pandoravote.net/img/pandora000024137.jpg
に書き換える方法を教えてください。
document.write("URL:"+location.href);
しか分かりません。
856Name_Not_Found:2008/05/25(日) 19:53:39 ID:???
それ、投げる時のを設定しようとしてるぞw
サーバが返却する応答に正しいContentTypeをつけてもらうようにしないと。
メソッド呼べばどうにかなる問題じゃない。
857Name_Not_Found:2008/05/25(日) 19:55:07 ID:3sa/tweh
>>855をただ置き換えるのではなくて、
「000024137」が毎回違って、
000024137の場合は、pandora000024137.jpg
に置き換えたいんです。
他の場合は、他のに置き換えたいんです。
000024137とかをpandora000024137.jpg とかに置き換える方法を教えてください。
数字はいつも違います。
お願いします。
858Name_Not_Found:2008/05/25(日) 19:56:19 ID:3sa/tweh
>>855はちなみに、greasemonkeyで使おうと思っています。
859Name_Not_Found:2008/05/25(日) 19:59:05 ID:???
>>855 >>857>>858
エロ張るなよ。まぁ、多分こんな感じでいけるだろ。

var a = document.getElementsByTagName("a");
for(var i = 0; i < a.length; i++){
 var el = a[i];
 el.href = el.href.replace(/index.php\?id=(\d+)/, "/img/pandora$1");
}
860Name_Not_Found:2008/05/25(日) 20:00:10 ID:???
>>855,857
var url = location.search.substring(1).split("=");
if(url[0] == "id"){
  var id = url[1];
}
alert("http://up.pandoravote.net/img/pandora"+id+".jpg");
861Name_Not_Found:2008/05/25(日) 20:03:13 ID:???
>>852
他国語理解不能です
862Name_Not_Found:2008/05/25(日) 20:09:41 ID:???
さあ>>855よ。
>>859>>860
どっちを選ぶんだ。
863822:2008/05/25(日) 20:35:15 ID:???
>>862
おねんねの時間
864Name_Not_Found:2008/05/25(日) 20:41:01 ID:???
>>863
言いたいことはわかるがコテは関係ないだろw
865Name_Not_Found:2008/05/25(日) 23:49:54 ID:???
ホストオブジェクト関係なく文字列操作だけすればこうなる。メソッド拡張は省略。
var replaceMyURI = function (getId) {
    var RFC3986 = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/;
    var PATH = '/img/pandora';
    var E = '.jpg';
    return function (href) {
        var ms = String.match(href, RFC3986);
        return typeof ms[7] == 'string' ?
          (ms[1] || '') + (ms[3] ||'') + PATH + getId(ms[7]) + E + (ms[8] || '') : '';
    };
}(
    function (findId) {
        var P = /[&;]/;
        return function (q) {
            var m = Object();
            return String.split(String.split(q, P).some(findId, m)) ? m.id : '';
        };
    }(
        function () {
            var D = '=';
            var N = 'id';
            return function (param) {
                var name_value = String.split(param, D);
                if (name_value[0] == N) {
                    this.id = name_value[1];
                    return true;
                }
                return false;
            };
        }()));
866Name_Not_Found:2008/05/26(月) 01:03:18 ID:???
PHPスレに書き込んだら、こちらのほうへ案内されたので、質問させてください。

情報を新しいウィンドウに渡すのは、できるようになったのですが。(JavaScript併用にて)
そのウィンドウから値を戻す方法がわかりません。

<script>
function openWindow(form){
form.target = window.open("about:blank", "win" + new Date().getTime() ).name;
form.submit(); }
</script>
---------略------------
<form method="POST" action="値の送り先.php" ENCTYPE="MULTIPART/FORM-DATA">
<input type="text" name="sendtext">
<input type="button" value="送る" onClick="openWindow(this.form)">
</form>
---------略------------
上記のようなソースで新しいウィンドウを開く&情報渡しをしているのですが。
たとえばこの開かせる側のページに <input type="text" name="modori" value=""> という部分があったとして。
新しく開いた 値の送り先.php から、その部分に値を入れるにはどう書けば良いのでしょうか。
値の送り先.phpのフォームタグのAction部分に、既に開いているウィンドウを指定したいと思ったのですが
どうにもやり方がわからないもので・・・。
フォームターゲットにwindow.openerを指定しても、また別のウィンドウが・・・。
867Name_Not_Found:2008/05/26(月) 01:11:29 ID:???
accordion.jsをつかってみたんですが、デフォルトで一番上のアコーディオンが
開いた状態になっています。
最初に開いた状態になるのが何番目のアコーディオンかを指定する方法なんかは
ネット上に情報がありましたが、サイトを開けた時に全部閉じた状態にする方法がわかりません
たぶんこの辺あたりのところ↓で指定出来ると思うのですが、なんて書けばいいのか教えてください、おながいします
jQuery('#list1a').accordion({
autoheight: false,
header: '.head',
navigation: true,
animated: 'easeslide',
speed: 'fast'
});
868Name_Not_Found:2008/05/26(月) 01:26:32 ID:???
>>866
ごめん、誘導先微妙に間違ったかも。一応自分が分かる範囲で。

値の送り先.php のレスポンスの onLoad か何かで、
windows.opener.フォーム名.modori.value = ほげほげ;
を呼び出すようにすれば良いと思う。
869Name_Not_Found:2008/05/26(月) 05:59:25 ID:???
>>867
質問とは関係ないけどひとつ開いておかないとアクセシビリティが低下すると思うよ
870Name_Not_Found:2008/05/26(月) 07:25:00 ID:???
>>868
それで出来ました。ありがとうございました。
871809:2008/05/26(月) 09:05:12 ID:o84vsy2j
遅くなってすいません

>>811
う゛に訂正して解決した訳ではなく、もともとぁ-う゛と指定してもひらがなカタカナの間が許可されてしまします。
訂正したのはソースをはりつける際に正しく書けなかったという意図です
872Name_Not_Found:2008/05/26(月) 11:56:45 ID:???
すみません、質問させていただきます。
SELECTタグについて、
メニューを表示している状態とメニューを開いていない状態を
JavaScriptで判断することは可能ですか?
873Name_Not_Found:2008/05/26(月) 12:20:35 ID:???
>>872
不可能
874809:2008/05/26(月) 12:26:23 ID:o84vsy2j
自己解決しました

ソースにう゛と表記してもHTMLに書き出す際にヴと変換されることが原因でした。
\uを使ってコード表記することで解決できました。

ありがとうございました
875872:2008/05/26(月) 15:42:00 ID:???
>>873
回答ありがとうございます。
やはりそうですか。それができれば楽なんですが。
では、少し質問を変えさせてもらいます。
どなたか、良い案があれば回答をお願いします。

@やりたいこと
 通常、SELECTにフォーカスを当てて、マウスホイールを動かすと、データの内容が変わります。
 それだと、ミスオペレーションを誘発してしまう (気づかないうちに値が変わってしまう。)
 それを制御したい。
A対応1
 一番簡単な方法として
 onmousewheel="return false";
 ↑をSELECTタグに追加すれば制御できる。
 が、この方法だと、メニューを開いた状態のときもマウスホイールが使えない。
 それは不便。
B対応2
 メニューを開いている状態の時はマウスホイールが使えて、
 メニューを閉じている状態の時はマウスホイールが使えないようにする。
 また、ある程度自動化し、FORM内のSELECTタグを検索し、制御するようにする。
 ※ソース参照

 しかし、下記オペレーションで問題発生
  1.プルダウンメニューを表示
  2.スクロールバーを奇数回クリック
  3.データを選択
  4.マウスホイールを動かす。
 スクロールバーをクリックしたときもイベントが発生してしまっている。

C質問
 対応2を正しく動作させるのに何か良い案がありませんか?
876872:2008/05/26(月) 15:47:57 ID:???
ソース↓
window.attachEvent('onload', controllMouseWheel);
function controllMouseWheel(){
var myForm = document.form1; //フォーム取得(form1のみ対応)
var formLength = myForm.elements.length;
for(var i = 0; i < formLength; i++){ //エレメントを一つずつ取得
var e = myForm.elements[i];
if(e.tagName == "SELECT"){ //SELECTタグを検索
e.mouseWheelFlg = "0"; //プルダウンメニュー判定用フラグを初期化
e.attachEvent('onmousewheel', mouseWheelWithCheck); //マウスホイール回転時にイベント関数を追加
e.attachEvent('onmousedown', onMouseDownForMouseWheel); //マウスクリック時にイベント関数を追加
e.attachEvent('onblur', clearMouseWheelFlg);//フォーカスアウト時にイベント関数を追加
}
}
}
function mouseWheelWithCheck(){
if (event.srcElement.mouseWheelFlg == '0'){ return false; }
}
function clearMouseWheelFlg(){
event.srcElement.mouseWheelFlg = "0";
}
function onMouseDownForMouseWheel(){
if (window.event.button == 1){ //左クリック判定
var e = event.srcElement;
if (e.mouseWheelFlg == "0"){//プルダウンメニューが閉じている状態から開いたとき
e.mouseWheelFlg = "1";
} else if (e.mouseWheelFlg == "1"){//プルダウンメニューが閉いている状態から閉じたとき
e.mouseWheelFlg = "0";
}
}
}
877Name_Not_Found:2008/05/26(月) 15:54:40 ID:???
>>875
selectを使わずに自前でselectのようなものを作るんでは。
検索すればライブラリとかありそうだと思うよ。
878872:2008/05/26(月) 16:54:08 ID:???
>>877
そうですね。
それも検討してはいますが、今あるSELECTをすべて変えるのは厳しいので。
できれば、最小限の修正に抑えたいです。
もし、対応2でいい方法がなければ、不便でも対応1にするつもりです。
879Name_Not_Found:2008/05/26(月) 16:57:33 ID:???
>>878
別の方法として、readonlyなinput type="text"に現在の値を
入れておき、そこをクリックするとそれを一次的にselectに
取り替えて選択させる。選択が終わったらまたtextに戻して
クリックするまで変化しなくさせる。これなら間違ってホイール
を回して変えてしまう危険はなくなるよね。
880872:2008/05/26(月) 17:18:34 ID:???
>>879
返信ありがとうございます。
ですが、「選択が終わったら」っていうイベントをどう取得すれば良いかわかりません。
onchangeだと同じ値を選択した時が拾えないし、
onmousedownだとメニュー内のスクロールをクリックしたときにもイベントが発生してしまうし。
881Name_Not_Found:2008/05/26(月) 18:20:44 ID:???
>>875
ブラウザ標準の動作をスクリプト側で弄るのはあまり行儀がよくない
本来の動作を期待する人を無視して自分が好きなUIに変えてしまうなんて自己満足以外の何者でもない

ちなみにその場合だとホイールイベントの直後に値が変化したかどうかで判定できる気がするが
それって本当に必要か?
882872:2008/05/26(月) 18:54:07 ID:???
>>881
>ブラウザ標準の動作をスクリプト側で弄るのはあまり行儀がよくない
>本来の動作を期待する人を無視して自分が好きなUIに変えてしまうなんて自己満足以外の何者でもない
まったく同意ではあるんですが、使う人がそうしたいと言うので・・・
使う人の自己満足を満たしてあげる必要があったりします。

>ちなみにその場合だとホイールイベントの直後に値が変化したかどうかで判定できる気がするが
その場合、onchangeイベントを別に使っていたら、onchangeイベントが動作してしまう気がします。
マウスホイールを動かしたときにはonchangeメソッドを停止しないといけないですよね?
さらに、メニューを開いてホイールを動作させて、上下キーを押下したときと区別がつかない気がします。
883Name_Not_Found:2008/05/26(月) 22:39:20 ID:???
>>882
「ミスオペレーションの誘発を制御したい」なんて言うから、考えを改めてもらおうと思ったが
1人用のローカルアプリとかならもちろん例外だな
ホイールを回した瞬間からたとえば10ms後に値が変化していなければ開いて回したとわかる、と言ってるんだけど
適当に思いついただけだから無理かもね
884Name_Not_Found:2008/05/26(月) 23:22:40 ID:???
>>883
レア系のイベントを試してみた。selectタグを開いたり閉じたり。IE7。
onafterupdate: 発動せず
oncontrolselect:発動せず
onpropertychange: onchangeと同じだった。
onselectstart: 発動せず。

う〜ん。ずばりのイベントはなさそうだから、イベントの組み合わせを考えるしかないと思う。

俺は自前のselectタグ作ったことあるが、
HTML構造に悩む→イベント設計に悩むで1週間はかかったお。(リリースは出来たけどね)
885Name_Not_Found:2008/05/26(月) 23:51:17 ID:???
>>867
このライブラリってもしかしたら全部閉じた状態ってのがないんじゃないか?
というか今マニュアル見てみたが、なさそうだね。
886811:2008/05/26(月) 23:58:35 ID:???
>>874
おうよ。
結局、普通にひらがなに使う濁点をはじいてる理由とか
「う゛」はSHIFT-JISコードにないひらがなを含めている理由とか君のコードはさっぱりだよw
正規表現を楽したいのは分かるが。。
887761:2008/05/27(火) 00:25:31 ID:???
>>842
Port:80ならうまくいったなぁ。それ以外のポート番号だとうまくいかないの?
ぶっちゃけ、80以外の動画のURL探す方が疲れるよ。
888Name_Not_Found:2008/05/27(火) 00:27:19 ID:???
>>884
首突っ込むならせめてonmousewheelくらい知っとけ
889Name_Not_Found:2008/05/27(火) 00:33:11 ID:???
うーん、mousewheelって上の方で話題になっててダメだっていう話じゃなかったか?
890Name_Not_Found:2008/05/27(火) 00:43:24 ID:???
最近の>>852>>839>>769
とかのもったいぶりつつとんちんかんなやつってなんなの?
891Name_Not_Found:2008/05/27(火) 02:31:23 ID:???
var word = 'あい(うえお)かきく';
var hit = word.match(/\(.+?\)/g);
word = word.replace(/\(.+?\)/g,'');
var result = word+hit; //あいかきく(うえお)

これと同じように、対象の文字列から括弧を後ろに移動するスマートな方法ありますか?
892Name_Not_Found:2008/05/27(火) 04:37:26 ID:???
普通に正規表現を使った置換でいいだろ。
>>1のCore JavaScriptガイドにも単語の入れ替えとか例が載ってるし。
893Name_Not_Found:2008/05/27(火) 07:06:03 ID:???
>>889
どう読んだらそうなるのか
894Name_Not_Found:2008/05/27(火) 08:54:22 ID:???
>>893
>>893
というか>>875を実施するにあたって一番欲しいイベントは、
>>872のものだと思っていて、>>873さんの言うように、
本当にそのようなイベントがないかどうか試してたんだよ。
後、onreadystatechangeも試したけど、>>872の状態を通知するものではないことを確認したよ。
895Name_Not_Found:2008/05/27(火) 09:08:35 ID:???
>>894
だ か ら ホイールイベント時に値を拾ってその 10ms 後 の 値 と 比べろっつってんだよ
どこをどう勘違いしたら>>884やらreadystatechangeが出てくるのか理解に苦しむね

・メニューは閉じた状態でフォーカスをあてて回転させるとすぐに値が変化する
・開いた状態で回転させてもメニューを閉じるまで値は変化しない
896Name_Not_Found:2008/05/27(火) 09:31:01 ID:???
あ、もちろん値が変化していたらもとに戻すってことだけど
なんでonchangeのwheelDeltaじゃ駄目なんだ?
897Name_Not_Found:2008/05/27(火) 15:59:10 ID:???
変数に値を入れる時、ファイルのパスに「\」は必須なんだけど
毎回毎回\\でエスケープしないといけないのが面倒すぎる
\をそのまま変数に代入する方法教えてくれ

他の言語では
hoge=@"値段は100\です"
でそのまま変数に代入される機能があったんだが、jsにはそういうの無いの?
898Name_Not_Found:2008/05/27(火) 16:11:56 ID:???
C#ですねわかります!
899Name_Not_Found:2008/05/27(火) 16:33:16 ID:???
>>897
そういう関数を作れ
900Name_Not_Found:2008/05/27(火) 16:45:19 ID:???
>>897
ヒアドキュメントを使ってみたらどう?
ttp://d.hatena.ne.jp/koseki2/20080112/jsheredoc

>>899
その関数にはどうやって文字列を渡すんだい?
901Name_Not_Found:2008/05/27(火) 17:04:28 ID:???
>>897
正規表現リテラルを使う
902Name_Not_Found:2008/05/27(火) 17:22:26 ID:35uRsxKS
テキストエリアにある文章をtextfieldにあるワードで置換したいのですが
そのワードが\tの場合、文字として挿入されてしまいます。
ちゃんとインデントできる方法はありませんか?
903Name_Not_Found:2008/05/27(火) 18:02:10 ID:???
>>902
正規表現オブジェクトを使う
904Name_Not_Found:2008/05/27(火) 18:39:33 ID:35uRsxKS
>>903
トンクス。やってみる
905Name_Not_Found:2008/05/27(火) 20:50:04 ID:35uRsxKS
やってみましたが、str.replace(/a/ig, "\t")とやるとうまくいくのですが
str.replace(/a/ig, x)としてxにtextfieldの「\t」という値を代入すると
文字になってしまいます。どうしたらいいでしょうか
906Name_Not_Found:2008/05/27(火) 23:09:11 ID:???
eval()するとかしろよカス
907Name_Not_Found:2008/05/27(火) 23:33:41 ID:???
eval()とか笑える
908Name_Not_Found:2008/05/27(火) 23:39:04 ID:???
他に方法がないので馬鹿が卑屈に笑うだけだわな。
909Name_Not_Found:2008/05/27(火) 23:55:14 ID:???
evalは初心者にはあまり知られてないから笑うことはよくあるよ。
そのうちevalの凄さをしることになるさ
910Name_Not_Found:2008/05/28(水) 00:46:41 ID:???
自分でメタキャラクタの判定をする方法もあるけど、めんどいわな。
911Name_Not_Found:2008/05/28(水) 00:56:37 ID:DEGDT4jH
evalについて少し調べてみます。どうもでした
912Name_Not_Found:2008/05/28(水) 01:36:02 ID:???
馬鹿なことするなよ、textfieldから持って来た文字列をそのまま
eval()するだって、気が狂ってるだろ。たとえば文字列aが変数の値(その
変数がなければundefinedとかエラー)になって正しいってのか?

まずtextfieldのvalueに対してreplaceで「\t」をタブ文字に
置換してそれからこれまで通りにやればよい。何も考えずに
eval()する馬鹿にだけはなるな。
913Name_Not_Found:2008/05/28(水) 01:42:06 ID:???
str = str.replace(/\t/g, "\t") ってことか。
914Name_Not_Found:2008/05/28(水) 02:35:48 ID:sEEkV7l5
質問いいですか?
915Name_Not_Found:2008/05/28(水) 02:38:12 ID:sEEkV7l5
ランダムに数字を6個取得し、それを降順で
表示する。できる人いないかい?
916Name_Not_Found:2008/05/28(水) 02:40:39 ID:???
ノシ
917Name_Not_Found:2008/05/28(水) 05:29:38 ID:???
>>915
いない
さようなら
918Name_Not_Found:2008/05/28(水) 08:22:29 ID:llbYhjsA
>>915
その数字というのは1桁?多数桁?0を含む?含まない?
重複はある?ない?いい加減な仕様ではプログラムなんか
書けないぞ。
919Name_Not_Found:2008/05/28(水) 10:13:58 ID:???
その数字というのは正の整数?それともマイナスも可?小数点は?
分数表現はあるの?10進数だけ?いい加減な仕様ではプログラムは
書けないみたいよ。

920Name_Not_Found:2008/05/28(水) 11:38:35 ID:???
そして「どこから」取得するのか?乱数であるなら、
どのような分布でどのような値域の乱数?
921Name_Not_Found:2008/05/28(水) 14:53:08 ID:???
正規表現のパターンに変数を使う事は出来ますか
出来るのなら記述の仕方を教えてください
922Name_Not_Found:2008/05/28(水) 15:33:22 ID:???
>>921
new RegExp(文字列) で正規表現を実行時に組み立てることが
できる。この文字列を組み立てる時に変数の値など組み込めば
いいんでないの。
923Name_Not_Found:2008/05/28(水) 15:44:12 ID:???
>>922
どうもありがとうございます
924Name_Not_Found:2008/05/28(水) 16:40:11 ID:???
>>915
学校の課題か何かのような気がするので答えるのも微妙だが、
10から100までのランダム。
var range = {min:10, max:100};
var dataAry = [];
for ( var n = 0; n < 6; n++ )
dataAry[n] = Math.floor(Math.random()*(range.max-range.min+1) + range.min);
dataAry.sort( function(a,b){return(a>=b?1:-1)} );
dataAry.reverse();
alert( dataAry );

>>906
いつものテンプレ煽りしか出来ない屑だろうけど、
さすがにここまで馬鹿だと放射性廃棄物並に有害だな。
925Name_Not_Found:2008/05/28(水) 16:45:00 ID:???
どっちかというと次はテンプレにeval()は使うなと入れる
べきじゃないかね?
Qx. eval()を使って文字列を数値に変換してはいけないのですか?
Ax. eval()は引数をプログラムとして即実行するため危険です。絶対に
使わない方がよい(数値にするならparseInt()やparseFloat()をどうぞ)。
926Name_Not_Found:2008/05/28(水) 17:44:17 ID:???
eval()は悪くないよ。使う人間が悪いんだ。
927Name_Not_Found:2008/05/28(水) 18:28:50 ID:???
()笑
928Name_Not_Found:2008/05/28(水) 18:32:33 ID:???
視野が狭いというか、知識が浅いというか。
929Name_Not_Found:2008/05/28(水) 18:33:29 ID:???
ちょっと質問させて下さい。

document.style.textDecoration = 'underline';

↑こういったコードで textDecorationの部分を変数で指定したいのですが、無理でしょうか?

evalを使えば、こんな感じでできるのですがevalを使わない方法は、無いかな?
eval('BaseID.style.' + TargetName + ' = TargetValue;');

930Name_Not_Found:2008/05/28(水) 19:06:37 ID:???
>>929
テンプレ読んで氏ね
931Name_Not_Found:2008/05/28(水) 19:07:04 ID:ibIipFrZ
>>929
evalで全然無問題でしょ。なぜ悪いのか説明できる?
それからでも遅くない。
932Name_Not_Found:2008/05/28(水) 19:09:13 ID:???
>>930
おまえが氏ね
933Name_Not_Found:2008/05/28(水) 19:11:02 ID:???
>>931
929 だけ見て eval() の引数が安全だって保証できるわけ?
934931:2008/05/28(水) 19:16:14 ID:???
>>933
だ・か・ら、なぜ悪いのか説明できる?と書いているわけだが・・・
できるならあんたからもいいが。なんで?
935Name_Not_Found:2008/05/28(水) 19:18:20 ID:???
え?
あれ?
日本語読めない人だった?
936Name_Not_Found:2008/05/28(水) 19:23:46 ID:???
質問なんですが、
jscriptにも複数行に渡ってマッチさせる正規表現みたいなの無いんでしょうか?
『RegexOptions Singleline』こんな感じのオプションがあるといいんですが・・・

[\s\S]等いろいろ試したんだけどうまくいかないのでどなたか教えて下さい。
937Name_Not_Found:2008/05/28(水) 19:40:55 ID:DEGDT4jH
>>912-913
tf = tf.replace(/\\t/g, "\t")でうまくいきました。
遅くなりましたがありがとうございました
938Name_Not_Found:2008/05/28(水) 19:48:59 ID:u6QkCZs4
IE以外のブラウザは気にしてません。

<input type="checkbox"id="xxx" name="1" value="0" onclick="clickLeft()" oncontextmenu="clickRight()">
<label for="xxx">

とするとlabel内で左クリックは拾えますが右クリックが拾えません
いちいちlabelを外側から<div oncontextmenu>で括るしかないんですかね?
939Name_Not_Found:2008/05/28(水) 20:55:16 ID:???
どこから突っ込めばいいのやら
940Name_Not_Found:2008/05/28(水) 21:26:34 ID:???
>>934
TargetNameに
font = "serif"; location.href = "http://www.yahoo.com"; x
という文字列が入っているとどういう動作になるかな。
ま、ページ遷移くらいなら大したことはないが、要するに
コードをどうにでも壊されてしまうということだね。
>>929
BaseID.style[TargetName] = ...
この方が上記のようなトラブルが起こり得ないしもちろん速いし
メンテナンス性もいいだろ。
941Name_Not_Found:2008/05/28(水) 21:44:23 ID:???
>>936
テンプレの>>1 にあるJavaScript 1.5 Guideを見るといいよ。
つか見れない奴はここに来ないで欲しいんだけどね。
942Name_Not_Found:2008/05/28(水) 22:16:42 ID:DaPKg26i
見られない、だな。JavaScriptと同じく日本語は正しく使って欲しい。
943Name_Not_Found:2008/05/28(水) 22:18:13 ID:???
キター
944Name_Not_Found:2008/05/28(水) 22:19:13 ID:???
>>940
>>931が何でムキになってるかよくわからないし、
この場合そうやって配列使って書くのが普通だと思うのだけど、
一つ横から質問してよい?

> TargetNameに
> font = "serif"; location.href = "http://www.yahoo.com"; x
こうやって操作するのは誰を想定しているの?

見ているユーザがテキストフィールドに入れたとしても
自分の見ているページに影響するだけだと思うのだけど、そういう意味であってる?
もしテキストフィールドがないページでeval使ってるなら平気?

ページに文字列埋め込んであって、それを実行しないといけないからeval使ってるんだけど、
レス見て心配になった
945Name_Not_Found:2008/05/28(水) 23:29:26 ID:???
>>940
コードをどうとでも壊されるてwww
壊す主体がスクリプト作者なら、そんな面倒はやらず、ダイレクトに書くわな。
壊す主体が閲覧者なら、勝手にやっとけっつうだけのこと。
もうねえ、こういう自作自演似非脆弱性指摘は、痛い外人だけにやらせとけってw
946Name_Not_Found:2008/05/28(水) 23:37:57 ID:???
>>945
そんな考え方は俺のところじゃ通用しないな。
947Name_Not_Found:2008/05/28(水) 23:45:43 ID:???
>>938
labelにforをつけても、その先のイベントは拾ってくれない。
おっしゃる通り、くくったりするしかない。
948Name_Not_Found:2008/05/28(水) 23:46:33 ID:???
>>940
evalだとどうもコードが見難くなって微妙に悩んでましたが解決しました。
ありがとうございました。

949Name_Not_Found:2008/05/28(水) 23:47:58 ID:???
>>936
念のため、/XX/gimみたいにmオプション付けてみて。
つけなくても、こっちでは[\s\S]でうまくいったけどな。
ほかの案なら[.\n]とかダメ?
950Name_Not_Found:2008/05/28(水) 23:48:30 ID:???
どっかから値を引っ張ってくるなら
例えば action を変更して違うサイトへ POST したりはできるよな
発想に貧困な自分なんかは
それがどういった意味を持つかはよくわからないが
たとえクライアントサイドであっても
入力されたデータを信用してはいけないってのは
基本だと思う
951Name_Not_Found:2008/05/29(木) 00:32:54 ID:???
次スレは975超えたら。テンプレにeval()のを入れていいかどうか?
952Name_Not_Found:2008/05/29(木) 00:47:08 ID:???
テストで40℃のお湯と60℃のお湯を同じ量混ぜたら100℃のお湯になるって答えたら×になったんだけど何で?
953Name_Not_Found:2008/05/29(木) 00:52:19 ID:???
40ccのお湯と60ccのお湯を同じ量…すでに量が違うじゃんかよ!
954Name_Not_Found:2008/05/29(木) 01:00:34 ID:???
はじめまして。

プルダウンから選択してフレーム内に表示させるものをつくりました。
そして、プルダウンが1つだけならちゃんと動作しましたが…
2つになるとなぜか飛びません。

http://home.netyou.jp/55/apica/frame.html

に見本をアップしておきます。
1つめのプルダウンだけならちゃんと右に結果が表示されるので…
どこかスクリプトのミスだと思うのですが。
Googleで「プルダウン フレーム 複数」で検索したのですが、
どこが悪いのかわかりませんでした。

ブラウザはIE7.0とFirefox2.0、OSはWinXPです。
お手数ですがよろしくお願いいたします。
955Name_Not_Found:2008/05/29(木) 01:14:12 ID:???
name="flink" が二つあるな
956Name_Not_Found:2008/05/29(木) 02:13:19 ID:???
テンプレ追加推奨
http://js-users.jp/
957954:2008/05/29(木) 03:02:44 ID:???
>>955さま
 あ、そういうことだったんですね。
 気がつかなくて???状態だったので助かりました。
 どうもありがとうございました。
958Name_Not_Found:2008/05/29(木) 03:05:36 ID:???
>>945のように暇潰しでJavaScriptをやっているなら良いかもしれないが、
今時フールプルーフを考慮しないサイト(に限らず各種サービス)は有り得ないね。
959Name_Not_Found:2008/05/29(木) 03:21:54 ID:???
だからなぜ eval = フールプルーフ無視 という短絡思考なのか、昔のJSがまだ尾を引いているのかな
扱い方さえ誤らなければ非常に有用で使いどころも少なくないのに
960Name_Not_Found:2008/05/29(木) 03:28:57 ID:???
さすが趣味の人は違うなあ
961Name_Not_Found:2008/05/29(木) 03:34:27 ID:???
マウスドラッグでの選択範囲について質問です。
文字列の選択した範囲を変更するコードを書いているのですが、
範囲を選択した後メニューをクリックすると選択範囲が解除されてしまします。
ForefoxとSafariでは解除されずに上手くいくのですが、IEで選択範囲を
そのまま固定する方法ってありませんか?
962Name_Not_Found:2008/05/29(木) 03:55:48 ID:???
え?
あれ?
日本語読めない人だった?
963Name_Not_Found:2008/05/29(木) 04:37:28 ID:???
>>961
メニューってのはメニューバーのメニュー?
それともコンテキストメニュー?Selectタグのプルダウンメニュー?
964961:2008/05/29(木) 05:04:45 ID:???
説明が足りませんでした。申し訳ない。
プルダウンメニューなのですが、Selectタグの物ではなく
HTMLエレメントで作ったプルダウンメニューです。
プルダウンさせる時のクリックで選択範囲が解除されてしまいます。
おとなしくSelectタグを使えって話なんですが。。
何かいい方法をご存知ないでしょうか。
965Name_Not_Found:2008/05/29(木) 05:11:40 ID:???
>>964
じゃぁ、プルダウンメニュークリック時に選択範囲を復活させるしかない気がしてる。
return falseとかでデフォルト動作を止める方法でもうまくいくかもしれない。
復活させる場合のコードだけ提供。以下がclickイベントハンドラ内での処理。
var sRng = document.selection.createRange();
setTimeout(function(){ sRng.select(); }, 1); //選択範囲を戻す。
966961:2008/05/29(木) 05:34:18 ID:???
選択範囲を復活させる方法でいけそうです。ありがとうございます。
967Name_Not_Found:2008/05/29(木) 08:14:04 ID:???
ここはeval()推奨派に「eval()があったらスマートにできる」
場面を挙げてもらって本当にそれが良い方法なのか検討しようぜ。
968Name_Not_Found:2008/05/29(木) 08:34:53 ID:???
JSON通信時に受信データをオブジェクトに変換するときにeval使う。
969Name_Not_Found:2008/05/29(木) 08:51:00 ID:???
>>967
JavaScriptでJavaScript実装はもちろん、Lispとかpythonを作る場合とか
IE4,5向けにFunction.prototype.apply作る場合とかで、eval使えるぞ。
970Name_Not_Found:2008/05/29(木) 08:58:27 ID:???
>>968
それは絶対やっちゃいけないと思うけどな。無知な人は
それ勧めているけど「セキュリティ上危険だからJSON.parse
などを通す」というのが常識化しつつあると思うよ。
>>969
そんなの実装してるとは言えない手抜きでしょ。普通に
構文解析して中間形式にしてから実行する方が安全だし高速。
そもそもふつーのWeb制作者は言語を実装なんかしないってば。
Web制作者が使うもっとふつーの用途っていうのはないの?
971Name_Not_Found:2008/05/29(木) 09:28:19 ID:???
この流れって「eval()でやるといいよ」回答しただけの回答者を何が
気に入らないのか糞味噌に罵倒したところから始まってるよね。
そのレヴェルでしょ。eval()に無知なヤシは宗教化しているだけ。
972Name_Not_Found:2008/05/29(木) 09:31:03 ID:???
俺としては、eval()でやるのって何か最終手段って感じがするわけで、できることならevalではない正当な方法で記述したいというだけなんだけどな。
973944:2008/05/29(木) 10:07:24 ID:???
僕の場合だけど、下のような感じでeval使ってます

前提は<a><img></a>となってて、
<a>のリンクのパラメータにURLエンコードが必要で、でもサーバ側はいじれない。
仕方なく href="javascript:〜" ってやってるのだけど、これだと、中クリックが効かない
なのでimgのonloadでaのhrefをevalで実行したものをhrefに入れ直してる。

「そもそもhref="javascript:〜"とかいつの時代だよ」って話もあるかもだけど、
URLエンコード付きパラメータ使うとなると仕方なくてそうしているのでそこは勘弁して
974Name_Not_Found:2008/05/29(木) 11:14:35 ID:???
というかevalの危険性なんて把握してるのが当たり前で、その上であえて使う場面も無いことはないのに
「eval」と聞いただけで鬼の首でも取ったかのように騒ぐ奴らが本当に面倒くさい。
975Name_Not_Found:2008/05/29(木) 12:00:57 ID:???
いや、どう見ても使わなくてもいいとこにevalとか言ってるんで
どうかなと思うだけで、 >>973 なんかはわりとなるほどと思った。
そういう点では >>972 に賛成の気分。とりあえずテンプレには
まだ入れないよね、これでもう975になるし…
976Name_Not_Found:2008/05/29(木) 12:51:51 ID:???
次スレ
http://pc11.2ch.net/test/read.cgi/hp/1212031089/l50
だけど、急に流れが遅くなったんでこのスレを消費してから移動してね。
977Name_Not_Found:2008/05/29(木) 13:16:25 ID:???
何と言うかevalに関しては両極端過ぎるね。
>>925の言うように"絶対に使わない方良い"ものでは決して無く、
必要とされる場面(それほど多くは無いが)で使えば有用な機能。

が、ユーザー入力のような任意の文字列にevalを使うなどは論外中の論外。
それをユーザーの自己責任だからいいんじゃね?派(>>945)や、
そもそもフールプルーフを知らない派(>>959)のようなアレな人間が擁護するから不要な混乱を招く。

>>976
978Name_Not_Found:2008/05/29(木) 13:41:12 ID:???
FAQの文案を直してみた。
Qx. eval()を使って入力文字列を数値に変換してはいけないのですか?
Ax. eval()をユーザ入力のような任意文字列に使用するのは危険です。
変換はparseFloat()やparseInt()で(真にevalが必要なケースはごく少数)。
979Name_Not_Found:2008/05/29(木) 13:46:25 ID:???
>>978
ま、マジで*ごく少数*なら、むしろ、これとこれ以外は使うな、と書いた
方が親切だね。つまりあっても一つか二つのケースってことでしょ。
980Name_Not_Found:2008/05/29(木) 14:00:37 ID:???
>>977
> ユーザーの自己責任だからいいんじゃね?派(>>945)
> フールプルーフを知らない派(>>959)

文盲お疲れ様です


>>978
その場合evalを引き合いに出す必要は無い罠
Qx. 文字列を数値に変換したいのですが
Ax. parseFloat('123.456')やparseInt('879')を使用します
981Name_Not_Found:2008/05/29(木) 14:01:23 ID:???
激しく既出と思いますがevalについて。
ttp://dev.opera.com/articles/view/efficient-javascript/?page=2#avoideval
↓(日本語訳)
ttp://www.hyuki.com/yukiwiki/wiki.cgi?EfficientJavaScript#i3

危険云々ももちろんありますが、単純に遅いってので私はあまり使いません。
特に古いブラウザやIE(7でかなり改善されたけど)は遅いので。
977さんが言ってるように、必要な場面のみ使うってのがいいんじゃないでしょうか。
絶対使わない!ってのは柔軟性に欠けますよね。
982Name_Not_Found:2008/05/29(木) 15:35:07 ID:???
983Name_Not_Found:2008/05/29(木) 15:56:11 ID:???
evalの議論秋田!
984Name_Not_Found:2008/05/29(木) 16:14:55 ID:???
Ajaxでも静岡?
985Name_Not_Found:2008/05/29(木) 17:56:54 ID:???
普通のJavaScriptの話し奈良いいよ
986Name_Not_Found:2008/05/29(木) 22:28:09 ID:???
>>978
何が危険なんだか。
987Name_Not_Found:2008/05/29(木) 22:56:54 ID:???
次スレ>>8に感動。Prototype.js とちゃんとCS意識が高い表記。
信頼性とか信憑性とかはこういう地道な細部に表れるものだね。
988Name_Not_Found:2008/05/29(木) 23:04:58 ID:???
989Name_Not_Found:2008/05/29(木) 23:48:33 ID:???
>>987
そのかわりjQueryのJが大文字になっている。
というかこのスレの>>12の時点で既に間違っていたけど。

しかし日本語でおkというより、酔っ払い乙と言いたくなるような文章だね。
990Name_Not_Found:2008/05/29(木) 23:48:58 ID:???
え・・?
991Name_Not_Found:2008/05/29(木) 23:49:56 ID:???
>>987
え・・?
992Name_Not_Found:2008/05/29(木) 23:55:51 ID:???
>>991
ん?・・
993987:2008/05/29(木) 23:59:03 ID:???
>>989
そっかぁ。だめだこりゃ。発言>>987全面撤回させて。
994Name_Not_Found:2008/05/30(金) 00:02:13 ID:???
感動とか撤回とか、あなたの感想なんて誰も聞いてません
心の中でやってください
995Name_Not_Found:2008/05/30(金) 06:43:22 ID:???
996Name_Not_Found:2008/05/30(金) 10:54:06 ID:???
ume
997Name_Not_Found:2008/05/30(金) 10:54:26 ID:???
ume
998Name_Not_Found:2008/05/30(金) 10:54:46 ID:???
ume
999Name_Not_Found:2008/05/30(金) 10:55:07 ID:???
ume
1000Name_Not_Found:2008/05/30(金) 10:55:27 ID:???
1000 なら JavaScript 最高!
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。