Web_Design 板


LINE

大家新年好~, 實作網頁功能有時會很好奇別人是怎麼做的,舉個例子, 大家熟知的 Gitlab 把成員從專案裡移除的時候,就是按一個 button, button 的 html 碼如下: <button type="button" class="btn js-modal-action-primary btn-danger"> <span class="gl-button-text">Remove member</span> </button> 首先,它上下沒 <form> tag,看起來不像是直接用 form submit 送出的, button 裡沒 id 沒 name 沒 onclick(),只有 class, 像這樣的一個功能,前端做個動作後在後端做些計算,再在前端做些反應, 算是蠻常見的設計。 自己要實現也不難,但寫出來明顯就是跟檯面上的大網站長得很不一樣, 很好奇別人都是用什麼樣的方式來實現的, 是 form 還是 ajax,關鍵值是怎麼傳遞的... 等等, 請問,是不是有什麼 trace 的方式, 或者是有這類的 design pattern 可以學習的呢? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.41.205 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Web_Design/M.1674474254.A.47D.html
1F:→ Hsins: 開發者工具打開可以去 trace 綁定的事件,他的元素定位方式 01/23 19:52
2F:→ Hsins: 不一定是直接找 button 可能是上層父元素作為標識,再往下 01/23 19:52
3F:→ Hsins: 一層找唯一的 button 01/23 19:52
4F:→ Hsins: 除了檢查綁定的函數之外,按下按鈕之後也可以檢查送出的請 01/23 19:57
5F:→ Hsins: 求,去挖掘一下 DevTools 會滿有幫助的 01/23 19:57
目前我在追的 button 點進去 Event Listeners 看到了 30 個 click 的綁定, 之前追了一下,覺得比較可能的路線,一路挖到 webpack 就進不去了, 可能我自己還沒有掌握到 trace tool 的竅門,會再努力一下,謝謝大大~
6F:推 shter: var btn=document.querySelector('button.btn-danger'); 01/23 23:23
7F:→ shter: btn.addEventListener('click', (e)=>{ 按下的程式碼區 }); 01/23 23:24
8F:推 shter: 任何方法抓到 DOM 元素,就可以對它加事件,不用 id / name 01/23 23:26
嗯嗯,雖然是如此,但有點難想像 gitlab 會這麼寫, 畢竟一個頁面裡可能會有很多 btn-danger 的 button, 如果要實作與後端的互動,應該會有些比較有系統的寫法才對, 呣,其實 gitlab 也有開放 source code, 我連後端的程式碼一起看也還沒抓到頭緒就是了...(汗 ※ 編輯: archon (114.37.196.21 臺灣), 01/24/2023 00:47:39
9F:推 gasbomb: 可以用chrome看network那一頁 看看按鈕送了什麼資訊出去 01/24 11:02
感謝大大的建議~!! 目前已知點下按鈕後,會呼叫 ~/{{ user_name }}/{{ project_name }}/-/project_members/{{ number }} Request Method: POST [Payload] _method: delete 是怎麼用 button 連結到 form submit 的還需要研究一下,努力中 QwQ --- 找到了一個可能有點用的關鍵字 data-qa-selector, 感謝各位大大的幫助,離真相近了不少... :D ※ 編輯: archon (114.37.203.41 臺灣), 01/24/2023 16:09:40
10F:→ ssccg: 現在用前端框架的網站很多,不如直接去找「真正的」原始碼 01/27 00:09
11F:→ ssccg: 學起來比較快吧,要深入也可以直接深入那些框架的原始碼 01/27 00:10
12F:推 imgodd: 主要就是js的部分,選擇器找到元素 點擊觸發函式執行 02/01 05:27
13F:→ imgodd: 原始碼看不出onclick 是框架的關係,但基礎其實都一樣的 02/01 05:28
14F:→ imgodd: 選擇元件,觸發事件 02/01 05:28
15F:→ imgodd: 如果想要原始碼有乾淨的風格,可以找一套框架學,比方說r 02/01 05:30
16F:→ imgodd: eact, vue,angular 02/01 05:30
17F:推 imgodd: 要執行函式不需要有form。 02/01 05:35
18F:→ imgodd: form是傳遞整包物件比較好的方法,要傳遞物件也不一定要 02/01 05:35
19F:→ imgodd: 用form,但有規則的使用更好維護。 02/01 05:35
20F:推 vi000246: 你學的方式怪怪的 這比較像逆向工程 從別人的code反推回 02/07 13:23
21F:→ vi000246: 去 你應該是先想要做什麼東西 再找要怎麼做 02/07 13:23
22F:推 secretfly: 這樣學完全沒問題 樓上根本吃嘴囡仔標準講幹話 02/23 20:14
23F:→ secretfly: 這個行業就是滿多人會在那邊屁東屁西 又不提供建議 02/23 20:15
24F:→ MonyemLi: 框架編譯,較大的專案很少直接寫原生js 03/06 07:50







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP