JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net (760レス)
JavaScript情報交換所(プログラミング既習者専用) [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1449440793/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
636: デフォルトの名無しさん [sage] 2020/07/24(金) 00:01:31.32 ID:2LubhzPR >>632 というかね、「イベントバブル」をオレオレ用語だと噛みついてくる時点でお前はどうかしてる。 JavaScript使ってて今まで聞いたことがないってのは本当に酷い。 MDNにも「イベントのバブリング」とは書いてある。 > https://developer.mozilla.org/ja/docs/Web/Guide/Events/Creating_and_triggering_events uhyohyoでも「イベントバブリング」って言ってる。 > https://uhyohyo.net/javascript/3_3.html -ing形だから通じないって事も無いだろうし、そもそもbubbleフェーズを表すと勘違いしても大体通じる内容でしかない。 そこで噛みついてくる意味が分からん。 JavaScriptが世のGUIを席巻しつつあるのは、イベントバブルの功績が大きい。 これがあるのと無いのとでは、GUIの組みやすさの次元が違うんだよ。 だから.NETもWPFで、GTKでもGTK+3から採用されてる。(Qtは知らん) それを全く使わずにJavaScriptのGUIを語るのは完全に間違ってる。 そこら辺がjQueryしか出来ない人(つまり君とか)の問題だと思うよ。 jQueryしか出来ない人が馬鹿にされているのは君も知っているだろ?そういうことだよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/636
641: デフォルトの名無しさん [sage] 2020/07/24(金) 00:33:37.06 ID:2LubhzPR >>637-639 半島に帰れ http://mevius.5ch.net/test/read.cgi/tech/1449440793/641
642: デフォルトの名無しさん [sage] 2020/07/24(金) 01:22:11.42 ID:2LubhzPR >>626 訂正、>>623でもバブルを利用しているようだ。 jQueryはこの形式だとDelegated event handlers として扱われ、 on時点でサブクエリして一致した子要素に付けるのではなく、 内部的にバブルしてきたイベントを使い、実行時にクエリして一致を確かめるようだ。(後半部は予想、実装依存) https://api.jquery.com/on/ だから確かにバブルを利用してはいるが、これだともっさり遅くはなる。(とはいえGUIの場合は大抵問題にはならない) jQueryは使ってないし今後も使う予定もないので仕様には詳しくなく、見た目で判断してしまった。 なるほど何だかんだで上手く出来てはいる。 が、まあ、いずれにしてもこれをDOMAPIだけで書くのも別段苦労しないし、 jQuery内部でe.targetを使っているだけで、e.targetが無ければjQuery自体が組めないだけでしかない。 >>640 イベントデリゲーションの方がかなりオレオレ用語だと思うが。 確かにMDNには書いてあるが、俺は今まで聞いたこともなかったし、そもそもそれを「デリゲーション(キリッ」とかいうのもどうかしてると思うが。 OOPで言う委譲に当たるから「デリゲーション」なんだろうが、それはOOPで言う「継承か委譲か」、という話とは全然違っていて、 単に親要素でしかなく、子要素とは何の関わりもない。(一応包含してはいるが) だから無理やりOOP的な解釈をすれば「デリゲート」しかないのだろうけど、 それは、世の中の全てを無理矢理OOPで解釈するJava脳みたいな感覚を受け、 Java以外で普通にOOPを分かっている奴からしたら相当気持ち悪い使い方だし、実際に流行ってもないだろ。 これが気持ち悪いと思わないのは君がOOPを理解してないからだよ。 ただし俺はGUI自体がOOPにフィットしないと思っているから、GUIしかやらないのなら理解している必要はないとも思うけども。 そして君は都合の悪い>>633は無視なのか? 既に言ったが、現在の状況でe.targetが無くなることはない。 ただ、あの辺デタラメに拡張して仕様がグダグダなので、整理しろよな、とは思うが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/642
643: デフォルトの名無しさん [sage] 2020/07/24(金) 01:48:12.97 ID:2LubhzPR ちなみにgoogle、 イベントバブル 約 22,500,000 件 (0.43 秒) イベントデリゲーション 約 23,600 件 (0.28 秒) http://mevius.5ch.net/test/read.cgi/tech/1449440793/643
650: デフォルトの名無しさん [sage] 2020/07/24(金) 08:10:38.59 ID:2LubhzPR >>644 お前が日本語が出来なくていろいろ勘違いしてるだけだろ。 まず示したように、「イベントデリゲーション」なんて言葉は誰も使ってないから止めとけ。 イベントバブルの説明に必ず出てくる言葉なら、使用頻度=ヒットページ数も1:1になるはずであって、 約1000:1ってのは誰も使ってないって事でしかない。 > バブリングフェーズとイベントデリゲーションはバスタブとミカンくらい意味が違うがおんなじもんだと思ってたわけ?w 俺は同じ物だとは一言も言ってない。それを勝手に誤解しているのはお前の日本語が韓国人レベルだからだ。 ただ、これらは表裏一体であって、イベントがバブルしなければ纏めるも何もないので、 お前が思っているほど区別する意味もない。 お前みたいな文系馬鹿はやたら細かく区別して意味無くドヤる傾向があるが、プログラミングってのはそもそもそういうものではない。 実際問題として、イベントバブルを説明する際に、 確かに「バブルしてくるイベントを親で捕らえて纏めて処理する」事を示す名詞が欲しい、というのはあるだろう。 ただ、誰もそこで「イベントデリゲーション」なんて言葉を使ってないから1000:1の使用頻度になってる。 実際は、「バブルしてくるイベントを親で捕らえて」とそのまま言っているのだと思う。 ただそもそもバブルさせる=親で捕らえて纏めて処理する大前提だから、それ含めてイベントバブルでも大して問題ないんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/650
651: デフォルトの名無しさん [sage] 2020/07/24(金) 08:10:58.84 ID:2LubhzPR 同様にお前が無駄に拘っているのが以下だが、 > > イベントバブルを最初に実装したフレームワークはHTMLで、 > 笑うしかないわw HTMLがフレームワークとかw (>>631) HTML/CSS/JavaScriptはほぼ常にセットで使われていて、どれだと区別する意味はないし、 確かに厳密にはどれでもないからWebAPIとか別括りにされてるが、そこに拘る意味もない。 俺は「イベントバブルを最初に実装した『フレームワークが』がHTMLだと言った。 お前的には「プラットフォーム」か、または別用語が適切なのかもしれんが、 いずれにしても言葉というのはコミュニケーションの手段であって、つまり通じるかどうかが最重要であって、 明らかに通じているのに揚げ足取りしているつもり?でドヤって来るのも頭おかしいとしか思えないが。 (オレオレ用語を使うなってのは「通じないから使うな」ということであって、オレオレ用語を使うこと自体が悪いというわけではない) お前いつものjQuery厨か? ならお前はここ2〜3年、まるで成長してないな。 >>649 むしろお前がそれを書けないと言っているに近いが、それをお前は認めるか? 日本語が通じない馬鹿なお前の為に敢えて言い直すと、 お前が「僕は書けませんから書いてみてください」と言うのなら書くが、 あまりに簡単すぎてお前の馬鹿さが際だつだけだぞ。 いずれにしても、脱jQueryなんてのが出てくるのはjQueryを使う意味がなくなりつつあるからであって、 お前がそれを気に入らなくても、それは事実として認めるしかないし、 実際にjQueryから輸入された仕様もあるのだからjQuery自体が糞だったわけでもないんだよ。 ただ、役割を終えつつある、というだけの話であってさ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/651
661: デフォルトの名無しさん [sage] 2020/07/24(金) 09:24:24.50 ID:2LubhzPR >>656 > イベントデリゲーションはかならず使うものじゃないんだから > イベントデリゲーションの方が数は少なくなるのは当たり前 ここが違う。 バブルを利用する時点で「親で纏めて処理する」大前提なんだよ。これも既に言ったが。 逆に、バブルだけしても親で処理しないのなら意味無いだろ。 (まあバブル自体は勝手にするのだが) だからイベントバブルの説明の際には必ず「親で処理する」事が含まれるんだよ。 これもお前みたいな文系馬鹿は「知識」としてそれぞれを別々にインストールしているから分からないのだろうが、 イベントバブルの説明=イベントバブル自体とその使い方の説明=当然親でイベントを纏めて処理する=「イベントデリゲーション」も説明される なんだよ。イベントバブルをお前はJavaScriptの「知識」として捕らえ、 「バブルフェーズとキャプチャフェーズ」もまた別の知識であり、 「イベントデリゲーション」も全く別の手法として「別知識」としているから駄目なんだ。 イベントバブルだけ理解しても、普通は、「ほ〜ん、で?何が嬉しいの?」となるから、どうやって使うか、何が美味しいかまで説明されてる。 だけどそこでは誰も「イベントデリゲーション」と言ってないから1000:1の使用頻度になってる。 ただし実際にイベントバブルを活用するにはそれなりの知識と設計が必要であり、 初心者には無理だから初心者用サイトでの説明は皆無で、既に言ったとおり俺が知っているのはuhyohyoだけ。 そしてここら辺が有機的に繋がっているのを理解出来ないのは君が「イベントバブルを活用するのは難しい初心者」レベルだから。 お前は相変わらず初心者のままなんだよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/661
663: デフォルトの名無しさん [sage] 2020/07/24(金) 09:35:52.90 ID:2LubhzPR >>658 > DOM APIの仕様だ まあ厳密にはあれはDOMに入れるべき物でもないんだよ。 だから今も「For web developers(non-nomative)」という中途半端な扱いになってる。 あれはDOMと言うよりはプログラミングモデルであって、本来は別仕様を起こすべきなのだが、 それを言いだしたらきりがないから現状はDOMに突っ込まれているだけでさ。 > 「イベントバブルを最初に実装した」というのはどういう意味か言ってみ > お前は「イベントがDOM要素の下位から上位へバブルのように登っていくこと」を実装した。 そうだぞ。俺はそう言ったんだ。 イベントがバブルするGUIフレームワークというのは、俺が知ってる中ではHTML/CSS/JavaScriptが初だよ。 それ以前の、XやMFC、.NET(Forms)ではバブルしない。 むしろお前は何をどう勘違いして俺に突っかかってきてるんだ? >>659 お前が簡単に書けるのなら書かないよ。書く意味もないし。 それってconsoleログ知ってる俺スゲー的なレベルであって、そんなもん一々コード書いてても時間の無駄だろ。 >>660 そう思うのならそれでいいと思うが。 必死にjQueryにすがるからおかしくなるだけで。 必要ない人はjQueryを使わないし、実際必要なくなりつつあるだけの話で、必要だと思えば使い続ければいいし、それだけだろ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/663
664: デフォルトの名無しさん [sage] 2020/07/24(金) 09:39:24.99 ID:2LubhzPR >>662 なら逆に、「イベントバブルを利用するが親ではイベントを処理しない」方式で何か有効活用出来るか? それがあれば「大前提」ってのは俺の勘違いだと認めるが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/664
669: デフォルトの名無しさん [sage] 2020/07/24(金) 09:48:58.90 ID:2LubhzPR >>665 wikiじゃねーかよ!そりゃ書いた奴が分かってねえんだよ。 既に言ったが、世の中のGUIフレームワークはイベントバブルをこぞって採用してる。 .NETはWPFから、GTKは3から。Qtは知らんが間違いなく採用はされるかその方向の筈。 理由も既に言ったとおり、バブルが出来れば非常に効率よくGUIを実装出来るから、 それに慣れると、バブルが出来ないフレームワークなんてゴミにしか見えなくなるから。 >>666-668 どうにもお前とは話が噛み合わないからこの辺で終わりにしておこう。 色々既に言ったとおりだ。気になるなら読み返してみてくれ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/669
674: デフォルトの名無しさん [sage] 2020/07/24(金) 10:12:17.88 ID:2LubhzPR >>670 一応読んだぞ。 まあそう思うのは自由だが、それは最初に書いてあるとおり、 > To handle cases where one event has more than one handler, event bubbling concept can be implemented. The major use of event bubbling is the registration of default functions present in the program. つまり一つのElementに複数のイベントハンドラを付けたい時にバブルを活用出来るとか、 或いはrootにデフォルトのイベントfunctionを付けておけばそれを「上書き」する際に活用出来る、みたいなわけだが、 そんな使い方してるサイトなんて無いぞ。というかそんなことしたら怒られると思うが。 複数付けたければ普通にaddEventListenerすればいいだけだし、 サイトのスクリプトがユーザースクリプトその他によって「上書き」される前提で書いているサイトなんてほぼ無い。 あるにしてもこんな邪道なやり方ではなく、「サイトのスクリプトをオフにする」という、公式な無効化機能が付いてる。 というか、そうじゃないとお互いに困るだろ。お前はそれも分からないレベルなのだろうけど。 >>671 逃げたって何の事よ? jQueryが採用しているとかそういう話ではなくて、 そもそもバブルは(お前が拘っている『DOMの仕様』なのだから)jQueryとは関係なく、勝手にする物だ。 そしてバブルを利用した書き方=親で纏めて処理する方式なら、 jQueryの得意とするqueryをすることがないからjQueryを使う意味がない、と言ったんだよ。 それはお前が本当に『書ける』というのならすぐに分かる話だろ。 お前はやっぱり書けないのだと思うよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/674
681: デフォルトの名無しさん [sage] 2020/07/24(金) 10:42:49.37 ID:2LubhzPR >>676 > queryしているコードを書いてみろって それはお前が>>622,623で既に書いてるだろ。 jQueryが美味しいのは、getElementByIdとか長たらしいこと書かずに$('#id')と書けるとか、 HTMLCollectionなのに単発のDOMみたいに扱えてforやforEach等のループを自前で書く必要がないとか、そういうところだろ。 そして俺が言ってるのは、親にeventhandlerを付けるのならその辺のおいしさが全くなくなる、ということだよ。 ただまあ、jQueryがそこまで好きならjQueryで一生書けばいいとも思うけど。 俺は必要ないから今後とも使わないだけであって。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/681
682: デフォルトの名無しさん [sage] 2020/07/24(金) 10:44:01.60 ID:2LubhzPR >>680 > 親でまとめてイベント処理することだって言ってたじゃんwww そうだぞ。イベントバブルを活用する=親で纏めて処理する、だ。 それ以外のまともな使い方は俺は知らん。(以下に続く) >>678 おお、確かに読み間違えてる。 一つのイベントが複数のイベントハンドラを持ちたい場合か。 しかし何だそりゃ?て話だがな。 一つのイベントに複数のハンドラを持たせたい為にバブルさせてそれぞれの階層で処理させて結果的に複数処理するってのは、 実際の動きを説明していると言えばそうだが、これの為にバブルを活用するのは間違いだと思うが。 ただまあ、wikiはこの辺デタラメに書く奴が居るからそこまでは信用しない方がいい。 Cの日本語wikiとかも結構デタラメだったりするし。 逆に、本当にこのケース「一つのイベントに複数のハンドラを持たせたい為」にバブルを利用して、 それ以外の方法では美しく実装出来ないケースがあれば確かに俺の勘違いだと認めるが、あるか? 何度も言ってるが、俺はそれがないから「バブルを利用する=親で纏めて処理」だと思っているわけでさ。 或いはこの記述、ユーザ目線ではなくブラウザ目線で書かれている? mouseleave/outの違いとか、 確かにmouseoutは一つのイベントを複数階層で処理して結果的に複数のハンドラを一つのイベントに与えている、とは言えるけども。 https://developer.mozilla.org/en-US/docs/Web/API/Element/mouseleave_event http://mevius.5ch.net/test/read.cgi/tech/1449440793/682
689: デフォルトの名無しさん [sage] 2020/07/24(金) 11:09:00.66 ID:2LubhzPR >>683-686 まあやはり堂々巡りか。 wikiに書いてる使い方で活用出来るかについては考えてはみるよ。 ただし、既に言ったが、今のところ俺はそんなの見たこと無いが。 お前が勘違いしているのは、デタラメな使い方でもちゃんとした使い方だ!と思っていること。 それは文系初心者プログラマにも多い、全ての文法を使える人が上級者だ!と勘違いしていたりするのにも近い。 実際はそうじゃない。 例えばキャプチャフェーズとかも実装されているから確かに使えるが、俺はそれを上手く使っている例を見たことがない。 正確に言えば、まともに設計すればキャプチャフェーズなんて必要な事がないから、誰も使ってないだけだが。 バブルにしても、邪道な使い方はいくらでも出来るが、そうではなくて、 正しい使い方=それ以外の方法ではそれ以上に美しく実装出来ない使い方なのか、ということだよ。 「一つのイベントに複数のハンドラ」も、addEventListerを複数行えば普通に実装出来る。 バブルさせる意味はないし、実際、バブルしない.NET(Forms)等でもこれは普通に可能だ。 だからまあ、君にも分かる書き方をするなら、 ・バブルしないX、MFC、.NET(Forms)、GTK2等でも書ける事=バブルを活用しているわけではない ・バブルしないX、MFC、.NET(Forms)、GTK2等では出来ない書き方=バブルを活用している なんだよ。そして複数のイベントをサブスクライブするのは.NET(Forms)は出来るから、 それはバブル必須ということにも、バブルを活用していることにもならない。 そしてその場合にはJavaScriptでも「バブル」ではなくaddEventListerを複数行うのが正道だよ。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/689
690: デフォルトの名無しさん [sage] 2020/07/24(金) 11:10:04.24 ID:2LubhzPR >>687 > 一つのイベント・・・click > それ以外の方法では美しく実装出来ないケース・・・google map うむ、これについて詳しくよろしく。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/690
693: デフォルトの名無しさん [sage] 2020/07/24(金) 11:17:44.62 ID:2LubhzPR >>692 逃げてるも何も、そのやり方が正道でなければそりゃ認めないよ。 既に言っているし、君も知っているはずだが、プログラミングなんて糞な書き方は無限に出来るわけでさ。 ふと考えたが、eをもしかしてmutable扱いか? これは若干邪道だけども、そうしないと無理(それ以外での実装では大量なコードが必要)ならそれもありではあるが。 http://mevius.5ch.net/test/read.cgi/tech/1449440793/693
696: デフォルトの名無しさん [sage] 2020/07/24(金) 11:21:33.78 ID:2LubhzPR >>693 訂正 693と思ったが、見る限りほぼ「読みとり専用」だから無理だな。 https://developer.mozilla.org/ja/docs/Web/API/Event http://mevius.5ch.net/test/read.cgi/tech/1449440793/696
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.033s