首頁 web前端 js教程 js 弹出菜单/窗口效果_javascript技巧

js 弹出菜单/窗口效果_javascript技巧

May 16, 2016 pm 06:00 PM
視窗

是不是应该为弹出菜单提供更好的可访问支持?这篇文章将涉及到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 创建的伪弹出窗口:使用 来隐藏。链接用锚点。
复制代码 代码如下:

[open current page 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,虽然只是没有特别优化的一段代码,但相信可以解决很多问题。对于可访问性,我们要走的路还有很多。一点点来吧,从今天开始。
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

win7視窗全螢幕快捷鍵是什麼 win7視窗全螢幕快捷鍵是什麼 Jun 29, 2023 pm 07:33 PM

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

谷歌瀏覽器怎麼設定每次開啟都是新的窗口 谷歌瀏覽器怎麼設定每次開啟都是新的窗口 Mar 06, 2024 pm 06:19 PM

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

Win7工作列顯示在桌面右側視窗怎麼辦 Win7工作列顯示在桌面右側視窗怎麼辦 Jun 29, 2023 pm 07:41 PM

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

windows10視窗顏色設定教學 windows10視窗顏色設定教學 Jul 08, 2023 pm 11:25 PM

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

關閉電腦遊戲廣告彈出視窗的方法 關閉電腦遊戲廣告彈出視窗的方法 Jul 07, 2023 pm 08:57 PM

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

Ubuntu Unity如何使用鍵盤快速鍵在應用程式視窗間切換? Ubuntu Unity如何使用鍵盤快速鍵在應用程式視窗間切換? Dec 29, 2023 pm 08:27 PM

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

如何修復 Windows 10 上卡在飛航模式下的窗口 如何修復 Windows 10 上卡在飛航模式下的窗口 Apr 13, 2023 am 11:07 AM

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

Excel要怎麼開啟兩個獨立視窗? excel視窗獨立開啟不重疊的方法 Excel要怎麼開啟兩個獨立視窗? excel視窗獨立開啟不重疊的方法 Mar 14, 2024 pm 03:10 PM

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

See all articles