js 弹出菜单/窗口效果_javascript技巧
是不是应该为弹出菜单提供更好的可访问支持?这篇文章将涉及到3种常见的弹窗:
window.open 新建的浏览器窗口
创建的窗口
页面 DOM 创建的伪弹出窗口:如弹出 tips 等
一、当页面无 JS 的时候
通常来说,无 JS 的情况那就按 HTML 的行为来做事。让链接可以链接,就已经解决。比较简单,我们简单带过:
1. window.open 新建的浏览器窗口:尽量让 JS 触发器绑定在 上,并把 a 链接到一个新的页面,即可。
// 链接与 window.open 的目标相同
[open window]
// 记得阻止链接有默认行为,不然有 JS 的时候会打开两次
window.open('./iframe.html', 'name', 'height=300,width=500');
return false;
2. 创建的窗口:如果是用 JS 动态创建的,那么记得触发器也应该像 window.open 的方法一样,把解法链接写在一个 上,让用户通过链接来访问。而如果是隐藏的,那么尽量来使用 来隐藏,再用 JS 让其正常显示出来;或者高度为 0 的空 iframe 。这样即可保证在有 JS 的时候可用,而在无 JS 的时候可以正常显示。详细应用可以参照:支付宝新首页的几点前端实践。
// 动态创建,请尽量使用这种方法,因为 IE8 不能用 JS focus 到动态创建的 focusable 元素
// 而空 src 则请使用 javascript:'' 这种方式,因为这是解决性能的最好方式,详见:空路径对页面性能影响的解决方案
[open iframe]
// js
document.getElementById('theframe').src = '/target.html'
3. 页面 DOM 创建的伪弹出窗口:使用 来隐藏。链接用锚点。
二、大多数情况下
大数多情况下,用户的浏览器都是有开启 JS 的。而我们要做的是:focus 到弹出的窗口,并且第一个 tab 就可以访问里面的内容。听过来挺简单的,hub? 先看看 DEMO:
预览:可访问弹出菜单/窗口
1. window.open 新建的浏览器窗口:focus 到新建的窗口即可。
// 引用自:QuickMode - popups
function popitup(url) {
newwindow=window.open(url,'name','height=200,width=150');
if (window.focus) {
// focus 到新建窗口
newwindow.focus();
}
// 阻止触发器的默认行为
return false;
}
2. 创建的窗口:调试了好久,IE8/9 需要等 iframe onload 成功后 setTimeout 来 hack;firefox 不能使用 ifrcontentWindow.focus(),只能用 iframe.focus()。综合起来需要这样的代码:
// for all except firefox
setTimeout(function(){
f.contentWindow.focus();
}, 50);
// hack for firefox
navigator.userAgent.toLowerCase().indexOf('firefox') !== -1 && f.focus();
3. 页面 DOM 创建的伪弹出窗口:对于 dom,除了 等这些 focusable 元素(W3C SPEC),都是不可以 focus 的。那么当需要 focus 到一个 div 时,我们有什么方法可以做到呢?通常来说,我们可以设置 Tabindex 来让像 这样的非 focusable 元素可以触发 focus 事件。但我们想要的时真正 focus 到一个地方,以便于使用 tab 来访问这个区域的内容,所以这种方法对我们等于无用。
目前还没有比较好的方法(对于我能想到的和找到的),所以目前来说,我们只能利用一个 focusable 元素来创建 focus 目标。我们可以这样做:
Get focus
但问题是,对于这个链接对于我们来说是毫无作用的,我们需要隐藏他,又能 focus 到。但 display:none 的时候是不能 focus 的。对于隐藏 来说,这里也不想说太多。推荐看看这篇文章:使用clip隐藏内容。那么我们可以这样来 hack 我们的这个链接:
// html: 注意用 hidefocus 来删除虚线框
Get focus
// CSS: 使用 clip
.getfocus{
position:relative;
clip:rect(1px 1px 1px 1px);
clip:rect(1px, 1px, 1px, 1px);
}
// javascript: 记得把 放在这个 DOM 结构的最前面方便自上至下 tab 下去
a.focus()
三、总结:
至此,重要的技术实现点也已经说明白。代码请见这个粗陋的 DEMO,虽然只是没有特别优化的一段代码,但相信可以解决很多问题。对于可访问性,我们要走的路还有很多。一点点来吧,从今天开始。

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

win7視窗全螢幕快捷鍵是什麼?我們在使用win7系統的時候,有時候開啟軟體的時候,它的運作視窗不是全螢幕的,這個時候我們需要透過滑鼠去最大化視窗。那麼有什麼快捷鍵可以快速去切換最大化視窗顯示呢?接下來跟大家分享win7視窗全螢幕快捷鍵教學。一、Alt+Enter一般程序,包括大部分遊戲在內的沒有自備全螢幕快捷鍵的程序。二、F11幾乎所有的瀏覽器,都可以用這個快捷鍵進行全螢幕。三、Alt+V+U包含word文件在內的大部分文件工具都可以用這個快捷鍵進行全螢幕。四、Ctrl+F/Space很多播放器軟體,讓視

谷歌瀏覽器怎麼設定每次開啟都是新的視窗?狠毒用戶喜歡使用谷歌瀏覽器辦公或學習,這款瀏覽器具有安全、快速、便捷的特點,不同的用戶使用瀏覽器的喜好不同,一些用戶喜歡打開谷歌瀏覽器就是新的標窗口,方便快速搜索,那麼如何設定呢。接下來小編就帶給大家谷歌瀏覽器每次開啟都是新的視窗設定教程,有興趣的朋友來學習一下。谷歌瀏覽器每次開啟都是新的視窗設定教學1、將電腦桌面上的Google瀏覽器雙擊開啟之後,點選右上角的【三個點】的圖示位置進行點擊。 2.找到【設定】這個選項進入到頁面中(如圖)。 3.進入到谷歌瀏

Win7工作列顯示在桌面右側視窗怎麼辦?一般情況下工作列預設是在螢幕底部的,但近期有Win7用戶打開電腦發現工作列跑到螢幕的右側視窗去了,那麼有沒有什麼方法可以將其修改回來呢?很多小夥伴不知道怎麼詳細操作,小編下面整理了Win7工作列顯示在桌面右側視窗解決步驟,如果你有興趣的話,跟著小編一起往下看看吧! Win7工作列顯示在桌面右側視窗解決步驟1、首先我們右鍵點選桌面右側視窗的工作欄,選擇屬性,如下圖所示: 2、開啟的工作列和屬性視窗中,在螢幕上的工作列位置選擇底部,並勾選鎖定工作列,點

許多windows10客戶覺得自己電腦預設的視窗顏色不好看,要設成其他顏色,要怎麼設定呢?大家需要先進入設定面板,找到個人化進到,隨後點擊顏色,之後就會出現一個顏色面板,你可以在其中挑選想要的顏色,以後保存設置,這時候顏色就改好了。你隨便開啟一個視窗就能看到顏色早已改變了。 windows10視窗顏色怎麼設定:1、改視窗邊框的顏色十分簡單,先進到系統配置。 2、隨後點擊“個性化”,如圖所示。 3.在彈出的視窗中,挑選左邊欄的「顏色」按鍵。 4、然後在右側的顏色清單中挑選所需的顏色即可,隨後點選確定

很多網友在玩win10電腦時,相信都會遇到一些廣告彈窗的騷擾,有時在玩遊戲時可能會出現遊戲廣告彈窗導致體驗不佳。那麼win10電腦右下角閃爍遊戲廣告怎麼辦?如何關閉電腦遊戲廣告彈窗?以下小編就教你如何關機的遊戲廣告彈窗。關閉電腦遊戲廣告彈出視窗的方法。第一步:找到閃爍的彈出視窗程序名稱一、閃爍彈跳窗出現時,先不要關閉,右鍵開啟電腦底部的工作列設定。 2.在工作列下方找到通知區域,點選在工作列上顯示選擇哪些圖示。 3.這裡列出的圖示曾經出現在你的任務欄上,所以即使你關閉了彈出窗口,這裡還是有記錄的。你

自從Unity桌面引入Ubuntu以來,其簡潔、實用的設計理念和美觀、高效的使用者介面越來越受到人們的歡迎。以下分享一下Unity桌面在切換應用程式視窗中使用快速鍵的幾個實用技巧。一、用Alt+Tab組合鍵在目前桌面的不同程式之間切換1、按Alt+Tab組合鍵,螢幕顯示程式切換條;按住Alt鍵,然後重複點按Tab鍵,切換條中的程式會按下從左到右的順序顯示白色光暈,當光暈到達目標程式時,釋放按鍵,目標程式立即成為目前視窗。 2.小技巧:1)先按住右邊的Alt鍵,再按Tab鍵,這時如果開啟的程式較多,目標程

如果您已開啟飛航模式(也稱為飛航模式),藍牙、Wi-Fi 和網路連線將自動關閉。因此,您不能使用任何依賴互聯網的應用程式。但是,儘管飛行模式已打開,您仍然可以手動開啟藍牙和Wi-Fi選項。有時,設備卡在飛行模式下,您無法在該特定設備上執行必要的操作。當這種情況發生時,人們會毫無頭緒。但是在本文中,我們有不同的解決方案可以幫助您解決此問題。嘗試一下,看看問題是否已解決。讓我們開始吧!方法 1 – 使用 Windows 設定關閉飛航模式步驟 1 –同時使用Windows + I鍵開啟視窗設定步驟

Excel是一款有著許多功能的辦公室軟體,幫助使用者更好的編輯表格內容,最近有不少使用者在使用的過程中,想要了解Excel怎麼開啟兩個獨立視窗?不會出現重疊,針對網友們提出的問題,今日就來為大夥進行解答,希望今日軟體教學內容可以幫助到各位。 Excel怎麼打開兩個獨立視窗? 1、像word那樣可以開兩個獨立的窗口,如下圖。具體操作如下。 2、先開啟開始功能表的運行,輸入regedit,開啟註冊表,如下圖所示。 3、開啟註冊表後,定位到HKEY_CLASSES_ROOT\Excel.S
