JavaScript >> Javascript 文檔 >  >> Tags >> Chrome

Chrome 馴服狂野的對話框和彈出窗口

這個週末我決定深入研究谷歌瀏覽器,看看隱藏在表面之下的寶石是什麼樣的。最後,我深入探索了瀏覽器如何處理對話框(警報、提示和確認)以及彈出窗口,並發現了一些非常有趣的東西。

首先,Chrome 有一個有趣的功能,它可以監控顯示給用戶的對話框數量。如果在單個線程執行期間顯示了兩個對話框,則第二個和每個後續對話框上都有一個額外的複選框,允許用戶禁止顯示其他對話框(見下文)。

選中此復選框並關閉對話框後,在重新加載頁面之前,腳本將無法顯示更多對話框(再次提醒、確認或提示)。您可以通過每次執行只顯示一個對話框來避免這種情況。例如,導致連續顯示兩個警報的用戶操作也將顯示此復選框;兩個導致警報的用戶操作將規避此行為。我認為這是一個有用的功能,可以防止“警報地獄”迫使您終止瀏覽器進程,儘管我希望有一些方法可以確定對話框是否實際顯示在腳本中。

接下來:彈出窗口。 Google Chrome 網站管理員常見問題解答指出彈出窗口會自動最小化,因此您只能看到頁面右下角的標題欄。這只是部分正確。由用戶操作(單擊或按鍵)啟動的彈出窗口將正常顯示。顯示在窗口右下角的唯一彈出窗口是在用戶操作之外啟動的彈出窗口。換句話說,通常在其他瀏覽器中被阻止的彈出窗口在右下角的 Chrome 中顯示。所以在 onload 期間打開了一個彈出窗口 事件處理程序將被最小化,而不是像在 Firefox 和其他瀏覽器中那樣被阻止。理由是這對開發人員來說是一種更好的體驗,他們不必擔心會拋出錯誤(彈出窗口阻止程序會這樣做),並且對於不會在進入時彈出窗口的用戶來說是一種更好的體驗一個網站。

這兩個功能讓我想起了 Firefox 在首次亮相時在網頁瀏覽方面所做的創新,包括在安全站點上更改位置欄的顏色以及在安裝插件時禁用“確定”按鈕 5 秒鐘。 Firefox 不斷創新,如果 Google Chrome 也能在這方面做出貢獻,它將為每個人帶來更好的體驗。


Tutorial JavaScript 教程
  1. 為什麼 JavaScript navigator.appName 為 Safari、Firefox 和 Chrome 返回 Netscape?

  2. Slack API 將字符串上傳為文件

  3. 需要幫助學習移動版 Web 開發

  4. 將熊掌記導出到 Markdown 文件

  5. 自定義你的 roguelike 圖形圖塊集(使用 JavaScript)

  6. 等待用戶完成寫入 Vue.js 中的輸入字段

  7. wddng - 有技術支持的婚禮

  1. 修改 Google Forms 確認頁面以使用 App Script .gs 顯示時間戳

  2. 基礎 Node.js 項目

  3. RegEx 使用 RegExp.exec 從字符串中提取所有匹配項

  4. 掌握 JavaScript 的難點:異步性 II

  5. 編寫環境設置腳本

  6. Javascript中弱引用的查找表

  7. JavaScript 記錄和元組提案:概述

  1. 在 JavaScript 和 PHP 中正確使用 JSON

  2. 你應該學習掌握 React 的 10 個 JavaScript 概念

  3. 使用 Zomato API 和 React Native 的餐廳搜索應用程序

  4. 使用 Mongoose 連接到 MongoDB