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