摘要:正因如此,團隊強烈建議不要使用對話框。替代方案有很多替代對話框的方案。對于對話框目前的計劃是需要用戶的許可才能顯示這將會改變的調(diào)用方法。網(wǎng)友評論此文一出,引起眾開發(fā)者的熱議。顯然,網(wǎng)友們反對聲音大于支持的聲音。
原文作者:Chromium team
編譯:胡子大哈翻譯原文:http://huziketang.com/blog/posts/detail?postId=58eef0dca58c240ae35bb8e5
英文連接:Chromium policy on JavaScript dialogs
轉(zhuǎn)載請注明出處,保留原文鏈接以及作者信息
JavaScript 對話框的歷史JavaScript 誕生于 1995 年。第一個版本的 JavaScript 中窗口對象的幾個方法是:alert(),confirm(),和 prompt()。
這在當時的環(huán)境是很合適的,但是隨著時間的推移,同期的 API 對于現(xiàn)代瀏覽器來講存在很多問題。因為這種 JavaScript 對話框模式是 app 模式,即此時 JavaScript 引擎是暫停狀態(tài),直到得到用戶反饋。也正是因為這種 app 模式,在瀏覽器中很傷用戶體驗。
正因如此,Chromium 團隊強烈建議不要使用 JavaScript 對話框。
替代方案有很多替代對話框的方案。
對于替換 alert()/confirm()/prompt(),有很多可選方法。需要提醒用戶(如日歷網(wǎng)站),那么可以使用 Notifications API。需要獲取用戶輸入,可以使用 HTML
至于 onbeforeunload,需要注意的是它已經(jīng)不可靠了。正如 Ilya Grigorik 所指出的:“在移動平臺上,你不能依賴于 pagehide,beforeunload 和 unload 事件”。如果你想保存狀態(tài),應該使用 Page Visibility API。
改變網(wǎng)頁中指定 onbeforeunload 字符串的功能在 Chrome 51 中就刪除了(從 Safari 9.1 和 Firefox 4 版本以后它們也刪除了)。
alert()/confirm()/prompt() 對話框也正在修改,不同于 app 模式,當瀏覽器 tab 發(fā)生切換時,它們會自動消失(Safari 9.1 已經(jīng)這么做了)。這一功能在金絲雀版和開發(fā)者版已經(jīng)完全支持了,在 beta 和 穩(wěn)定版中部分支持。但是可以肯定的是將來一定會支持的更多。
對于 beforeload 對話框目前的計劃是需要用戶的許可才能顯示(這將會改變 beforeload 的調(diào)用方法)。在這一點上 Chromium 和 Firefox 達成了一致,在 Firefox 44 中將會應用這一變化)。
正是因為發(fā)生了這些變化,如果你的網(wǎng)站使用了對話框(dialog),強烈建議你使用前面所提到的那些替代方案,以防對你產(chǎn)生影響。
網(wǎng)友評論Chromium 此文一出,引起眾開發(fā)者的熱議。這里挑出一些典型的評論和觀點。
Notification API 是另一回事,你想取消就取消好了,但是譴責舊的、這么好用的 alert() 就是你的不對了。
這會使得使用起來更麻煩,原來的 alert 方法很簡單。
做成 page 模式的就好了,就像 Firefox 7 年前做的那樣,很少的改變,大家不需要重寫代碼。
我查了文中給的關于 HTML
越早變越好,現(xiàn)在已經(jīng)過去了好幾天了。
...
顯然,網(wǎng)友們反對聲音大于支持的聲音。不知道你是怎么看呢?歡迎大家一起討論。
我最近正在寫一本《React.js 小書》,對 React.js 感興趣的童鞋,歡迎指點。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82540.html
摘要:在隨后的版本中,團隊一直在修改原生彈窗的表現(xiàn)。所以這種原生彈窗的最大用處不是用來提示用戶信息,而是傷害用戶。團隊在中移除了對彈窗的支持。獲取用戶輸入可以用中的元素。作為的元素,目前除了和以外,其它瀏覽器均未支持。 自 1995 年 JavaScript 誕生之初,就包含了 3 個方法 alert()、confirm() 和 prompt()。在隨后的 Chrome 版本中,Chrome...
摘要:僅限數(shù)值表示新窗口的高度。一個字符串參數(shù),并將其顯示給用戶,提供兩個按鈕,一個按鈕返回布爾值另一個按鈕返回布爾值。 全局作用域 window 在是BOM 的核心對象,他是瀏覽器的一個實例。 在全局作用域中聲明的變量、函數(shù)都會變成window 對象的屬性和方法。如: var age = 18; function sayAge(){ console.log(window.age);...
摘要:僅限數(shù)值表示新窗口的高度。此時只要檢查這個返回值就可以確定彈窗是否被屏蔽。返回一個布爾值,代表用戶選擇還是返回一個字符串或者,輸入了值并確定,返回字符串,其他方法關閉返回打印查找對話框。 ECMAScript是JavaScript的核心,但如果要在Web中使用JavaScript,那么BOM(瀏覽器對象模型)則無疑才是真正的核心。 W3C為了把瀏覽器中JavaScript最基本的部分...
摘要:確定和取消彈框,按確定返回,按取消或者關閉按鈕返回。官方瀏覽器名返回所使用瀏覽器的名稱。對象有一個屬性,表示對象中的記錄數(shù)。屬性描述屏幕的寬度屏幕的高度窗口可以使用的屏幕的寬度窗口可以使用的屏幕的高度對象見溫故系列 前端學習:教程&開發(fā)模塊化/規(guī)范化/工程化/優(yōu)化&工具/調(diào)試&值得關注的博客/Git&面試-前端資源匯總 歡迎提issues斧正:BOM JavaScript-BOM BO...
閱讀 3222·2023-04-25 18:43
閱讀 903·2021-11-24 09:39
閱讀 1367·2021-10-14 09:43
閱讀 3902·2021-09-22 15:58
閱讀 1923·2019-08-29 17:18
閱讀 421·2019-08-29 14:14
閱讀 3086·2019-08-29 13:01
閱讀 1623·2019-08-29 12:33