即使是JavaScript被禁止,這些右鍵菜單仍然能正常顯示。所以,如果你想尊重用戶的選擇,最好的方法是用JavaScript來創(chuàng)建這些菜單元素,注入到DOM元素里,這樣,當(dāng)JavaScript被禁止時(shí),這些右鍵菜單也不顯示了。
HTML5規(guī)范里有一個(gè)被大家忽略里的好東西,那就是右鍵菜單。HTML5里的右鍵菜單規(guī)范顯示,程序員可以通過創(chuàng)建簡單的HTML5menu和menuitem標(biāo)記來生成右鍵菜單。菜單只在指定區(qū)域的右鍵菜單內(nèi)顯示。所以,你不需要再通過創(chuàng)建瀏覽器插件來實(shí)現(xiàn)這種效果。下面就讓我來展示如何用基本的HTML標(biāo)記來創(chuàng)建個(gè)性化的右鍵菜單!
XML/HTML Code復(fù)制內(nèi)容到剪貼板
- <section contextmenu="mymenu">
- <!--
- 為了讓代碼清晰整潔
- 我會把菜單放到這個(gè)元素內(nèi)部
- -->
- </section>
-
XML/HTML Code復(fù)制內(nèi)容到剪貼板
- <menu type="context" id="mymenu">
- <menuitem label="重新加載本文" onclick="window.location.reload();" icon="/images/refresh-icon.png"></menuitem>
- <menuitem label="跳躍至評論區(qū)" onclick="window.location='#comments';" icon="/images/comment_icon.gif"></menuitem>
- <menu label="分享本文至..." icon="/images/share_icon.gif">
- <menuitem label="新浪微博" icon="/images/twitter_icon.gif" onclick="goTo('//twitter.com/intent/tweet?text=' + document.title + ': ' + window.location.href);"></menuitem>
- <menuitem label="QQ空間" icon="/images/facebook_icon16x16.gif" onclick="goTo('//facebook.com/sharer/sharer.php?u=' + window.location.href);"></menuitem>
- </menu>
- </menu>
-
注意,這里的menu標(biāo)記的ID和上面的contextmenu里的值是一致的,這樣做的效果是,只有在上面的那個(gè)section區(qū)域里點(diǎn)擊右鍵時(shí)才會顯示這些右鍵菜單。這些菜單里可以配置菜單名,菜單圖標(biāo)和onclick事件,用來聲明它們的意義和要執(zhí)行的動(dòng)作。動(dòng)作可以是預(yù)先定義的JavaScript動(dòng)作,或是執(zhí)行inline的JavaScript代碼。相同的菜單可以放到頁面的多個(gè)區(qū)域,不需要重復(fù)創(chuàng)建。
目前只有火狐瀏覽器是唯一實(shí)現(xiàn)了這個(gè)API的瀏覽器。一些特別重要的功能我一般不喜歡放到右鍵菜單里,但有這樣的功能當(dāng)然是十分方便,這個(gè)API的主旨是提高易用性而不會有任何負(fù)面影響。我在菜單里放置的分享功能就是一個(gè)很好的例子。相信你在你的項(xiàng)目里也經(jīng)常使用右鍵菜單,不是嗎?