国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript實(shí)現(xiàn)按Ctrl鍵打開新頁面

2019-11-20 14:11:31
字體:
供稿:網(wǎng)友

(譯者注: 本文解決的是按 Ctrl鍵時(shí)使用JS打開新頁面的問題)

在簡(jiǎn)化的HTML5規(guī)范中,允許在 A 標(biāo)簽內(nèi)包含多個(gè) DIV 和/或其他塊級(jí)元素. 現(xiàn)在只要用 <a> 標(biāo)簽包住塊元素,就能搞定原來需要用JavaScript來監(jiān)聽并調(diào)用 window.location 實(shí)現(xiàn)頁面跳轉(zhuǎn)(redirect)功能.

但使用<a>標(biāo)簽的這種包裝形式也有不好使的情況 ―― 例如,某個(gè)塊元素(block)內(nèi)還有一些 <a> 標(biāo)簽, 這種情況下我們只想在點(diǎn)擊parent中<a>以外的其他部分時(shí)才跳轉(zhuǎn)到一個(gè)給定的地址。

當(dāng)然,像下面這樣用一個(gè)簡(jiǎn)單的listener 也能實(shí)現(xiàn)我們的需求:

復(fù)制代碼 代碼如下:

someElement.addEventListener('click', function(e) {
    // URL地址是什么都行,或者你也可以使用其他的代碼來指定.
    // 此處用的是該元素的 `data-src` DOM屬性(attribute)
    window.location = someElement.get('data-url');
});

…但這有時(shí)會(huì)有很糟的用戶體驗(yàn), 當(dāng)按住CTRL鍵(Mac是COMMAND鍵),再用鼠標(biāo)點(diǎn)擊時(shí),它會(huì)在同一個(gè)(標(biāo)簽頁)窗口內(nèi)打開鏈接。知道有這個(gè)問題,你肯定想到了該如何去解決.我們修改一小點(diǎn)代碼就能達(dá)成這個(gè)目的,趕快花點(diǎn)時(shí)間去修復(fù)你的listener吧:

復(fù)制代碼 代碼如下:

someElement.addEventListener('click', function(e) {
    // 獲取URL
    var url = someElement.get('data-url');
    // 判斷是否按下了CTRL鍵
    if(e.metaKey || e.ctrlKey || e.button === 1) {
        window.open(url);
    } else {
        window.location = url;
    }
});

原文作者已經(jīng)在 http://davidwalsh.name/ 網(wǎng)站上實(shí)現(xiàn)了這個(gè)功能,在使用window.location進(jìn)行頁面重定向時(shí)你也應(yīng)該記得這一點(diǎn)。這是一個(gè)很小的代碼改進(jìn),但對(duì)可用性的提高卻是非常重要的!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 红桥区| 漠河县| 于田县| 中卫市| 东乡县| 饶阳县| 揭东县| 灯塔市| 韩城市| 滨州市| 宜宾县| 南澳县| 平南县| 邛崃市| 岑溪市| 桦川县| 安庆市| 巴林左旗| 肃北| 武鸣县| 黔东| 华安县| 荥经县| 台安县| 武宣县| 饶河县| 东明县| 东辽县| 教育| 南投市| 罗平县| 新密市| 鄂温| 抚州市| 台江县| 大安市| 庆城县| 漯河市| 吴江市| 密云县| 霍州市|