html中a標籤href屬性的一個坑

來源:互聯網
上載者:User

標籤:android   style   blog   http   color   io   os   使用   java   

     由於公司需要,小菜最近在搞app web開發,目前只有ios和android版本,雖然僅此兩個版本,但是依然要考慮瀏覽器安全色性問題,因為android和ios預設瀏覽器核心是不一樣的。

     先說說相容性問題是什麼。假如有這樣一個URL:

          http://www.kpdown.com/search?name=Ben Nadel 

     此URL後邊有一個name參數,只不過參數的值竟然帶了空格,這樣的連結,直接用android瀏覽器訪問,是沒有問題的,但用ios的瀏覽器訪問,這就是一個錯誤的URL,會報錯的!

     所以,我們會想到編碼,name參數的值,可以用encodeURIComponent()方法進行編碼,然後再拼接到URL上,這樣就安全了(encodeURIComponent是js原生方法,直接用即可)。

     然後,我們可以這樣利用超連結:

           <a href="javascript:openURL(‘http://www.kpdown.com/search?name=Ben%20Nadel‘);" >查詢</a> 

     利用openURL這個js方法進行頁面跳轉(假設有一個openURL方法,其中不涉及任何解碼操作)。

     這段代碼在android中運行正常,但到了ios中,依然報錯,的確是編碼了,為什麼還是不行呢?

     請看如下代碼:

 1 <a href="javascript:openURL(‘http://www.kpdown.com/search?name=Ben%20Nadel‘);">測試href</a> 2 <a href="javascript:;" onclick="javascript:openURL(‘http://www.kpdown.com/search?name=Ben%20Nadel‘);">測試onclick</a> 3  4 <script> 5   function openURL(url){ 6     /* 7     * 測試href --print--> http://www.kpdown.com/search?name=Ben Nadel 8     * 測試onclick --print--> http://www.kpdown.com/search?name=Ben%20Nadel 9     */10     console.log(url);11   }12 </script>

 

     由此可見:“萬惡”的href屬性,在調用openURL傳參時自動解碼,而onclick屬性則保持參數原封不動。

     因此,小菜強烈不推薦使用a標籤的href屬性調用js,onclick方法非常的科學,非常的穩定,非常的正確,href的本意就是用來跳轉URL,就不要用它來執行js啦。其實更好的做法是綁定事件,那樣代碼更好管理,看起來也整潔。

     本文所講貌似是很小的一件事,但如果沒有意識到是href的問題,就得浪費大量不必要的時間,希望讀者能夠有所借鑒~~~

 

html中a標籤href屬性的一個坑

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.