主頁 > 企業開發 > 一起學Vue之事件處理

一起學Vue之事件處理

2020-10-04 15:58:21 企業開發

在Vue進行前端開發中,事件監聽是必不可少的功能,本文通過簡單的小例子,簡述v-on的簡單用法,僅供學習分享使用,如有不足之處,還請指正,

監聽事件

可以用 v-on 指令監聽 DOM 事件,并在觸發時運行一些 JavaScript 代碼,如下所示:

1 <button v-on:click="counter += 1">Add 1</button>
2 <p>按鈕被點擊了 {{ counter }} 次.</p>

其中counter為Vue自定義的一個屬性值,

事件處理方法

事實上,許多事件處理邏輯會更為復雜,所以直接把 JavaScript 代碼寫在 v-on 指令中是不可行的,因此 v-on 還可以接收一個需要呼叫的方法名稱,如下所示:

1 <button v-on:click="greet">Greet</button>

greet 是在下面定義的方法名,如下所示:

 1 <script type="text/javascript">
 2     var app=new Vue({
 3         el:'#app',
 4         data:{
 5             msg:'hello world!!!',
 6             counter:0,
 7             name: 'Vue.js'
 8         },
 9         // 在 `methods` 物件中定義方法
10         methods:{
11             greet: function (event) {
12                 // `this` 在方法里指向當前 Vue 實體
13                 alert('Hello ' + this.name + '!')
14                  // `event` 是原生 DOM 事件
15                 if (event) {
16                     alert(event.target.tagName)
17                 }
18             },
19                 
20         }
21     });
22 </script>

行內處理器中的方法

除了直接系結到一個方法,也可以在行內 JavaScript 陳述句中呼叫方法,如下所示:

1 <button v-on:click="say('hi')">Say hi</button> 
2 <button v-on:click="say('what')">Say what</button>

有時也需要在行內陳述句處理器中訪問原始的 DOM 事件,可以用特殊變數 $event 把它傳入方法:

1 <button v-on:click="warn('表單不能被提交.', $event)">提交</button>

其中say,warn均為自定義方法,如下所示:

 1 say: function (message) {
 2     alert(message);
 3 },
 4 warn: function (message, event) {
 5     // 現在我們可以訪問原生事件物件
 6     if (event) {
 7         event.preventDefault();
 8     }
 9     alert(message);
10 }

事件修飾符

在事件處理程式中呼叫 event.preventDefault() 或 event.stopPropagation() 是非常常見的需求,盡管我們可以在方法中輕松實作這點,但更好的方式是:方法只有純粹的資料邏輯,而不是去處理 DOM 事件細節,為了解決這個問題,Vue.js 為 v-on 提供了事件修飾符,之前提過,修飾符是由點開頭的指令后綴來表示的,事件修飾符共以下幾種:

  • .stop
  • .prevent
  • .capture
  • .self
  • .once
  • .passive
 1 <!-- 阻止單擊事件繼續傳播 -->
 2 <a v-on:click.stop="doThis">點擊666</a>
 3 <!-- 提交事件不再多載頁面 -->
 4 <form v-on:submit.prevent="onSubmit">
 5     <div>阻止提交</div>
 6 </form>
 7 <!-- 修飾符可以串聯 -->
 8 <a v-on:click.stop.prevent="doThat"></a>
 9 <!-- 只有修飾符 -->
10 <form v-on:submit.prevent>
11     <div id="d">只有修飾符</div>
12 </form>
13 <!-- 添加事件監聽器時使用事件捕獲模式 -->
14 <!-- 即內部元素觸發的事件先在此處理,然后才交由內部元素進行處理 -->
15 <div v-on:click.capture="doThis">doThis...</div>
16 <!-- 只當在 event.target 是當前元素自身時觸發處理函式 -->
17 <!-- 即事件不是從內部元素觸發的 -->
18 <div v-on:click.self="doThat">doThat...</div>
View Code

使用修飾符時,順序很重要;相應的代碼會以同樣的順序產生,因此,用 v-on:click.prevent.self 會阻止所有的點擊,而 v-on:click.self.prevent 只會阻止對元素自身的點擊,

新增屬性

不像其它只能對原生的 DOM 事件起作用的修飾符,.once 修飾符還能被用到自定義的組件事件上,

1 <!-- 點擊事件將只會觸發一次 -->
2 <a v-on:click.once="doThis">點我一次666</a>

Vue 還對應 addEventListener 中的 passive 選項提供了 .passive 修飾符,

1 <!-- 滾動事件的默認行為 (即滾動行為) 將會立即觸發 -->
2 <!-- 而不會等待 `onScroll` 完成  -->
3 <!-- 這其中包含 `event.preventDefault()` 的情況 -->
4 <div v-on:scroll.passive="onScroll">...</div>

這個 .passive 修飾符尤其能夠提升移動端的性能,不要把 .passive 和 .prevent 一起使用,因為 .prevent 將會被忽略,同時瀏覽器可能會向你展示一個警告,請記住,.passive 會告訴瀏覽器你不想阻止事件的默認行為,

按鍵修飾符

在監聽鍵盤事件時,我們經常需要檢查詳細的按鍵,Vue 允許為 v-on 在監聽鍵盤事件時添加按鍵修飾符:

1 <!-- 只有在 `key` 是 `Enter` 時呼叫 `vm.submit()` ,點擊時不呼叫 -->
2 <input v-on:keyup.enter="submit" type="text" value="點我777"  />
3 <!--  可以直接將 KeyboardEvent.key 暴露的任意有效按鍵名轉換為 kebab-case 來作為修飾符,-->
4 <input v-on:keyup.page-down="onPageDown" type="text" value="點我888" />
5 <!-- 在上述示例中,處理函式只會在 $event.key 等于 PageDown 時被呼叫,且游標在時才管用, -->

系統修飾符

可以用如下修飾符來實作僅在按下相應按鍵時才觸發滑鼠或鍵盤事件的監聽器,

  • .ctrl
  • .alt
  • .shift
  • .meta

注意:在 Mac 系統鍵盤上,meta 對應 command 鍵 (?),在 Windows 系統鍵盤 meta 對應 Windows 徽標鍵 (?),在 Sun 作業系統鍵盤上,meta 對應實心寶石鍵 (◆),在其他特定鍵盤上,尤其在 MIT 和 Lisp 機器的鍵盤、以及其后繼產品,比如 Knight 鍵盤、space-cadet 鍵盤,meta 被標記為“META”,在 Symbolics 鍵盤上,meta 被標記為“META”或者“Meta”,

1 <!-- Alt + C -->
2 <input @keyup.alt.67="clear">
3 
4 <!-- Ctrl + Click -->
5 <div @click.ctrl="doSomething">Do something</div>

請注意:修飾鍵與常規按鍵不同,在和 keyup 事件一起用時,事件觸發時修飾鍵必須處于按下狀態,換句話說,只有在按住 ctrl 的情況下釋放其它按鍵,才能觸發 keyup.ctrl,而單單釋放 ctrl 也不會觸發事件,如果你想要這樣的行為,請為 ctrl 換用 keyCode:keyup.17,

.exact 修飾符

.exact 修飾符允許你控制由精確的系統修飾符組合觸發的事件,

1  <!-- 即使 Alt 或 Shift 被一同按下時也會觸發 -->
2 <button @click.ctrl="onClick">A</button>
3 <!-- 有且只有 Ctrl 被按下的時候才觸發 -->
4 <button @click.ctrl.exact="onCtrlClick">A</button>
5 <!-- 沒有任何系統修飾符被按下的時候才觸發 -->
6 <button @click.exact="onClick">A</button>

滑鼠按鈕修飾符

這些修飾符會限制處理函式僅回應特定的滑鼠按鈕,如下所示:

  • .left
  • .right
  • .middle

為什么在 HTML 中監聽事件?

你可能注意到這種事件監聽的方式違背了關注點分離 (separation of concern) 這個長期以來的優良傳統,但不必擔心,因為所有的 Vue.js 事件處理方法和運算式都嚴格系結在當前視圖的 ViewModel 上,它不會導致任何維護上的困難,實際上,使用 v-on 有幾個好處:

  1. 掃一眼 HTML 模板便能輕松定位在 JavaScript 代碼里對應的方法,
  2. 因為你無須在 JavaScript 里手動系結事件,你的 ViewModel 代碼可以是非常純粹的邏輯,和 DOM 完全解耦,更易于測驗,
  3. 當一個 ViewModel 被銷毀時,所有的事件處理器都會自動被洗掉,你無須擔心如何清理它們,

本例中全部代碼如下所示:

  1 <!DOCTYPE html>
  2 <html>
  3     <head>
  4         <meta charset="utf-8">
  5         <title>事件處理</title>
  6         <!-- 開發環境版本,包含了有幫助的命令列警告 -->
  7         <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  8     </head>
  9     <body>
 10         <div id="app">
 11             <h2>監聽事件</h2>
 12             <!-- 
 13              可以用 v-on 指令監聽 DOM 事件,并在觸發時運行一些 JavaScript 代碼,
 14              -->
 15             <button v-on:click="counter += 1">Add 1</button>
 16             <p>按鈕被點擊了 {{ counter }} 次.</p>
 17             <h2>事件處理方法</h2>
 18             <!-- 
 19              然而許多事件處理邏輯會更為復雜,所以直接把 JavaScript 代碼寫在 v-on 指令中是不可行的,
 20              因此 v-on 還可以接收一個需要呼叫的方法名稱,
 21              -->
 22             <!-- `greet` 是在下面定義的方法名 -->
 23             <button v-on:click="greet">Greet</button>
 24             <!-- 
 25              // 也可以用 JavaScript 直接呼叫方法
 26              //app.greet() // => 'Hello Vue.js!'
 27              -->
 28              <h2>行內處理器中的方法</h2>
 29              <!-- 
 30               除了直接系結到一個方法,也可以在行內 JavaScript 陳述句中呼叫方法:
 31               -->
 32             <button v-on:click="say('hi')">Say hi</button> 
 33             <button v-on:click="say('what')">Say what</button>
 34             <!-- 
 35             有時也需要在行內陳述句處理器中訪問原始的 DOM 事件,可以用特殊變數 $event 把它傳入方法: 
 36              -->
 37              <br>
 38              <button v-on:click="warn('表單不能被提交.', $event)">提交</button>
 39              <h2>事件修飾符</h2>
 40              <!-- 
 41              在事件處理程式中呼叫 event.preventDefault() 或 event.stopPropagation() 是非常常見的需求,
 42              盡管我們可以在方法中輕松實作這點,但更好的方式是:方法只有純粹的資料邏輯,而不是去處理 DOM 事件細節,
 43              為了解決這個問題,Vue.js 為 v-on 提供了事件修飾符,之前提過,修飾符是由點開頭的指令后綴來表示的,
 44              .stop
 45             ?.prevent
 46             ?.capture
 47             ?.self
 48             ?.once
 49             ?.passive
 50               -->
 51             <!-- 阻止單擊事件繼續傳播 -->
 52             <a v-on:click.stop="doThis">點擊666</a>
 53             <br>
 54             <!-- 提交事件不再多載頁面 -->
 55             <form v-on:submit.prevent="onSubmit">
 56                 <div>
 57                     阻止提交
 58                 </div>
 59             </form>
 60             <br>
 61             <!-- 修飾符可以串聯 -->
 62             <a v-on:click.stop.prevent="doThat"></a>
 63             <br>
 64             <!-- 只有修飾符 -->
 65             <form v-on:submit.prevent>
 66                 <div id="d">
 67                     只有修飾符
 68                 </div>
 69             </form>
 70             <br>
 71             <!-- 添加事件監聽器時使用事件捕獲模式 -->
 72             <!-- 即內部元素觸發的事件先在此處理,然后才交由內部元素進行處理 -->
 73             <div v-on:click.capture="doThis">doThis...</div>
 74             <br>
 75             <!-- 只當在 event.target 是當前元素自身時觸發處理函式 -->
 76             <!-- 即事件不是從內部元素觸發的 -->
 77             <div v-on:click.self="doThat">doThat...</div>
 78             <!-- 
 79             使用修飾符時,順序很重要;相應的代碼會以同樣的順序產生,
 80             因此,用 v-on:click.prevent.self 會阻止所有的點擊,而 v-on:click.self.prevent 只會阻止對元素自身的點擊, 
 81              -->
 82             <h2>新增</h2>
 83             <!-- 點擊事件將只會觸發一次 -->
 84             <a v-on:click.once="doThis">點我一次666</a>
 85             <!-- 
 86              不像其它只能對原生的 DOM 事件起作用的修飾符,.once 修飾符還能被用到自定義的組件事件上,
 87              -->
 88              <!-- 
 89               Vue 還對應 addEventListener 中的 passive 選項提供了 .passive 修飾符,
 90               -->
 91             <!-- 滾動事件的默認行為 (即滾動行為) 將會立即觸發 -->
 92             <!-- 而不會等待 `onScroll` 完成  -->
 93             <!-- 這其中包含 `event.preventDefault()` 的情況 -->
 94             <div v-on:scroll.passive="onScroll">...</div>
 95             <!-- 
 96             這個 .passive 修飾符尤其能夠提升移動端的性能,
 97             !不要把 .passive 和 .prevent 一起使用,因為 .prevent 將會被忽略,同時瀏覽器可能會向你展示一個警告,
 98             請記住,.passive 會告訴瀏覽器你不想阻止事件的默認行為,
 99              -->
100              <h2>按鍵修飾符</h2>
101              <!-- 
102               在監聽鍵盤事件時,我們經常需要檢查詳細的按鍵,Vue 允許為 v-on 在監聽鍵盤事件時添加按鍵修飾符:
103               -->
104             <!-- 只有在 `key` 是 `Enter` 時呼叫 `vm.submit()` ,點擊時不呼叫 -->
105             <input v-on:keyup.enter="submit" type="text" value="點我777"  />
106             <!-- 
107              可以直接將 KeyboardEvent.key 暴露的任意有效按鍵名轉換為 kebab-case 來作為修飾符,
108              -->
109              <input v-on:keyup.page-down="onPageDown" type="text" value="點我888" />
110              <!-- 
111               在上述示例中,處理函式只會在 $event.key 等于 PageDown 時被呼叫,且游標在時才管用,
112               -->
113              <h2>#按鍵碼</h2>
114             <!-- 
115             keyCode 的事件用法已經被廢棄了并可能不會被最新的瀏覽器支持,  使用 keyCode attribute 也是允許的:
116              -->
117             <input v-on:keyup.13="submit" type="button" value="key up 13">
118             <!-- 
119              為了在必要的情況下支持舊瀏覽器,Vue 提供了絕大多數常用的按鍵碼的別名:
120              .enter
121             ?.tab
122             ?.delete (捕獲“洗掉”和“退格”鍵)
123             ?.esc
124             ?.space
125             ?.up
126             ?.down
127             ?.left
128             ?.right
129             !有一些按鍵 (.esc 以及所有的方向鍵) 在 IE9 中有不同的 key 值, 如果你想支持 IE9,這些內置的別名應該是首選,
130             你還可以通過全域 config.keyCodes 物件自定義按鍵修飾符別名:
131             // 可以使用 `v-on:keyup.f1`
132             Vue.config.keyCodes.f1 = 112
133              -->
134              <h2>系統修飾鍵</h2>
135              <!-- 
136               可以用如下修飾符來實作僅在按下相應按鍵時才觸發滑鼠或鍵盤事件的監聽器,
137               .ctrl
138             ?.alt
139             ?.shift
140             ?.meta
141             注意:在 Mac 系統鍵盤上,meta 對應 command 鍵 (?),
142             在 Windows 系統鍵盤 meta 對應 Windows 徽標鍵 (?),在 Sun 作業系統鍵盤上,meta 對應實心寶石鍵 (◆),
143             在其他特定鍵盤上,尤其在 MIT 和 Lisp 機器的鍵盤、以及其后繼產品,比如 Knight 鍵盤、space-cadet 鍵盤,meta 被標記為“META”,
144             在 Symbolics 鍵盤上,meta 被標記為“META”或者“Meta”,
145               -->
146             <!-- Alt + C -->
147             <input @keyup.alt.67="clear">
148 
149             <!-- Ctrl + Click -->
150             <div @click.ctrl="doSomething">Do something</div>
151             <!-- 
152             !請注意修飾鍵與常規按鍵不同,在和 keyup 事件一起用時,事件觸發時修飾鍵必須處于按下狀態,
153             換句話說,只有在按住 ctrl 的情況下釋放其它按鍵,才能觸發 keyup.ctrl,而單單釋放 ctrl 也不會觸發事件,
154             如果你想要這樣的行為,請為 ctrl 換用 keyCode:keyup.17, 
155              -->
156             <h2>#.exact 修飾符</h2>
157             <!-- 
158              .exact 修飾符允許你控制由精確的系統修飾符組合觸發的事件,
159              -->
160              <!-- 即使 Alt 或 Shift 被一同按下時也會觸發 -->
161             <button @click.ctrl="onClick">A</button>
162 
163             <!-- 有且只有 Ctrl 被按下的時候才觸發 -->
164             <button @click.ctrl.exact="onCtrlClick">A</button>
165 
166             <!-- 沒有任何系統修飾符被按下的時候才觸發 -->
167             <button @click.exact="onClick">A</button>
168             <h2>#滑鼠按鈕修飾符</h2>
169             <!-- 
170              .left
171             ?.right
172             ?.middle
173 
174             這些修飾符會限制處理函式僅回應特定的滑鼠按鈕,
175 
176              -->
177              <h2>為什么在 HTML 中監聽事件?</h2>
178              <!-- 
179              你可能注意到這種事件監聽的方式違背了關注點分離 (separation of concern) 這個長期以來的優良傳統,
180              但不必擔心,因為所有的 Vue.js 事件處理方法和運算式都嚴格系結在當前視圖的 ViewModel 上,它不會導致任何維護上的困難,
181              實際上,使用 v-on 有幾個好處:
182             1.掃一眼 HTML 模板便能輕松定位在 JavaScript 代碼里對應的方法,
183             2.因為你無須在 JavaScript 里手動系結事件,你的 ViewModel 代碼可以是非常純粹的邏輯,和 DOM 完全解耦,更易于測驗,
184             3.當一個 ViewModel 被銷毀時,所有的事件處理器都會自動被洗掉,你無須擔心如何清理它們,
185               -->
186         </div>
187         <script type="text/javascript">
188             var app=new Vue({
189                 el:'#app',
190                 data:{
191                     msg:'hello world!!!',
192                     counter:0,
193                     name: 'Vue.js'
194                 },
195                 // 在 `methods` 物件中定義方法
196                 methods:{
197                     greet: function (event) {
198                       // `this` 在方法里指向當前 Vue 實體
199                       alert('Hello ' + this.name + '!')
200                       // `event` 是原生 DOM 事件
201                       if (event) {
202                         alert(event.target.tagName)
203                       }
204                     },
205                     say: function (message) {
206                       alert(message);
207                     },
208                     warn: function (message, event) {
209                         // 現在我們可以訪問原生事件物件
210                         if (event) {
211                           event.preventDefault();
212                         }
213                         alert(message);
214                     },
215                     doThis:function(){
216                         alert('點我666');
217                     },
218                     doThat:function(){
219                         alert('點它666');
220                     },
221                     submit:function(){
222                         alert('點我--submit');
223                     },
224                     onPageDown:function(){
225                         alert('點我--onPageDown');
226                     },
227                     doSomething:function(){
228                         alert('點我--doSomething');
229                     },
230                     clear:function(){
231                         alert('點我--clear');
232                     },
233                     onClick:function(){
234                         alert('點我--onClick');
235                     },
236                     onCtrlClick:function(){
237                         alert('點我--onCtrlClick');
238                     }
239                 }
240             });
241         </script>
242     </body>
243 </html>
View Code

備注

學而時習之,不亦說乎!!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/154861.html

標籤:JavaScript

上一篇:react-native-----hello word!

下一篇:vue koa2 mongodb 從零開始做個人博客(二) 登錄注冊功能后端部分

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • IEEE1588PTP在數字化變電站時鐘同步方面的應用

    IEEE1588ptp在數字化變電站時鐘同步方面的應用 京準電子科技官微——ahjzsz 一、電力系統時間同步基本概況 隨著對IEC 61850標準研究的不斷深入,國內外學者提出基于IEC61850通信標準體系建設數字化變電站的發展思路。數字化變電站與常規變電站的顯著區別在于程序層傳統的電流/電壓互 ......

    uj5u.com 2020-09-10 03:51:52 more
  • HTTP request smuggling CL.TE

    CL.TE 簡介 前端通過Content-Length處理請求,通過反向代理或者負載均衡將請求轉發到后端,后端Transfer-Encoding優先級較高,以TE處理請求造成安全問題。 檢測 發送如下資料包 POST / HTTP/1.1 Host: ac391f7e1e9af821806e890 ......

    uj5u.com 2020-09-10 03:52:11 more
  • 網路滲透資料大全單——漏洞庫篇

    網路滲透資料大全單——漏洞庫篇漏洞庫 NVD ——美國國家漏洞庫 →http://nvd.nist.gov/。 CERT ——美國國家應急回應中心 →https://www.us-cert.gov/ OSVDB ——開源漏洞庫 →http://osvdb.org Bugtraq ——賽門鐵克 →ht ......

    uj5u.com 2020-09-10 03:52:15 more
  • 京準講述NTP時鐘服務器應用及原理

    京準講述NTP時鐘服務器應用及原理京準講述NTP時鐘服務器應用及原理 安徽京準電子科技官微——ahjzsz 北斗授時原理 授時是指接識訓通過某種方式獲得本地時間與北斗標準時間的鐘差,然后調整本地時鐘使時差控制在一定的精度范圍內。 衛星導航系統通常由三部分組成:導航授時衛星、地面檢測校正維護系統和用戶 ......

    uj5u.com 2020-09-10 03:52:25 more
  • 利用北斗衛星系統設計NTP網路時間服務器

    利用北斗衛星系統設計NTP網路時間服務器 利用北斗衛星系統設計NTP網路時間服務器 安徽京準電子科技官微——ahjzsz 概述 NTP網路時間服務器是一款支持NTP和SNTP網路時間同步協議,高精度、大容量、高品質的高科技時鐘產品。 NTP網路時間服務器設備采用冗余架構設計,高精度時鐘直接來源于北斗 ......

    uj5u.com 2020-09-10 03:52:35 more
  • 詳細解讀電力系統各種對時方式

    詳細解讀電力系統各種對時方式 詳細解讀電力系統各種對時方式 安徽京準電子科技官微——ahjzsz,更多資料請添加VX 衛星同步時鐘是我京準公司開發研制的應用衛星授時時技術的標準時間顯示和發送的裝置,該裝置以M國全球定位系統(GLOBAL POSITIONING SYSTEM,縮寫為GPS)或者我國北 ......

    uj5u.com 2020-09-10 03:52:45 more
  • 如何保證外包團隊接入企業內網安全

    不管企業規模的大小,只要企業想省錢,那么企業的某些服務就一定會采用外包的形式,然而看似美好又經濟的策略,其實也有不好的一面。下面我通過安全的角度來聊聊使用外包團的安全隱患問題。 先看看什么服務會使用外包的,最常見的就是話務/客服這種需要大量重復性、無技術性的服務,或者是一些銷售外包、特殊的職能外包等 ......

    uj5u.com 2020-09-10 03:52:57 more
  • PHP漏洞之【整型數字型SQL注入】

    0x01 什么是SQL注入 SQL是一種注入攻擊,通過前端帶入后端資料庫進行惡意的SQL陳述句查詢。 0x02 SQL整型注入原理 SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和資料庫打交道的地方都有可能存在。 如這里http://192.168. ......

    uj5u.com 2020-09-10 03:55:40 more
  • [GXYCTF2019]禁止套娃

    git泄露獲取原始碼 使用GET傳參,引數為exp 經過三層過濾執行 第一層過濾偽協議,第二層過濾帶引數的函式,第三層過濾一些函式 preg_replace('/[a-z,_]+\((?R)?\)/', NULL, $_GET['exp'] (?R)參考當前正則運算式,相當于匹配函式里的引數 因此傳遞 ......

    uj5u.com 2020-09-10 03:56:07 more
  • 等保2.0實施流程

    流程 結論 ......

    uj5u.com 2020-09-10 03:56:16 more
最新发布
  • 使用Django Rest framework搭建Blog

    在前面的Blog例子中我們使用的是GraphQL, 雖然GraphQL的使用處于上升趨勢,但是Rest API還是使用的更廣泛一些. 所以還是決定回到傳統的rest api framework上來, Django rest framework的官網上給了一個很好用的QuickStart, 我參考Qu ......

    uj5u.com 2023-04-20 08:17:54 more
  • 記錄-new Date() 我忍你很久了!

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 大家平時在開發的時候有沒被new Date()折磨過?就是它的諸多怪異的設定讓你每每用的時候,都可能不小心踩坑。造成程式意外出錯,卻一下子找不到問題出處,那叫一個煩透了…… 下面,我就列舉它的“四宗罪”及應用思考 可惡的四宗罪 1. Sa ......

    uj5u.com 2023-04-20 08:17:47 more
  • 使用Vue.js實作文字跑馬燈效果

    實作文字跑馬燈效果,首先用到 substring()截取 和 setInterval計時器 clearInterval()清除計時器 效果如下: 實作代碼如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ......

    uj5u.com 2023-04-20 08:12:31 more
  • JavaScript 運算子

    JavaScript 運算子/運算子 在 JavaScript 中,有一些運算子可以使代碼更簡潔、易讀和高效。以下是一些常見的運算子: 1、可選鏈運算子(optional chaining operator) ?.是可選鏈運算子(optional chaining operator)。?. 可選鏈操 ......

    uj5u.com 2023-04-20 08:02:25 more
  • CSS—相對單位rem

    一、概述 rem是一個相對長度單位,它的單位長度取決于根標簽html的字體尺寸。rem即root em的意思,中文翻譯為根em。瀏覽器的文本尺寸一般默認為16px,即默認情況下: 1rem = 16px rem布局原理:根據CSS媒體查詢功能,更改根標簽的字體尺寸,實作rem單位隨螢屏尺寸的變化,如 ......

    uj5u.com 2023-04-20 08:02:21 more
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 08:01:50 more
  • 如何在 vue3 中使用 jsx/tsx?

    我們都知道,通常情況下我們使用 vue 大多都是用的 SFC(Signle File Component)單檔案組件模式,即一個組件就是一個檔案,但其實 Vue 也是支持使用 JSX 來撰寫組件的。這里不討論 SFC 和 JSX 的好壞,這個仁者見仁智者見智。本篇文章旨在帶領大家快速了解和使用 Vu ......

    uj5u.com 2023-04-20 08:01:37 more
  • 【Vue2.x原始碼系列06】計算屬性computed原理

    本章目標:計算屬性是如何實作的?計算屬性快取原理以及洋蔥模型的應用?在初始化Vue實體時,我們會給每個計算屬性都創建一個對應watcher,我們稱之為計算屬性watcher ......

    uj5u.com 2023-04-20 08:01:31 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:01:10 more
  • http1.1與http2.0

    一、http是什么 通俗來講,http就是計算機通過網路進行通信的規則,是一個基于請求與回應,無狀態的,應用層協議。常用于TCP/IP協議傳輸資料。目前任何終端之間任何一種通信方式都必須按Http協議進行,否則無法連接。tcp(三次握手,四次揮手)。 請求與回應:客戶端請求、服務端回應資料。 無狀態 ......

    uj5u.com 2023-04-20 08:00:32 more