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