簡體   English   中英

MS Edge有一個window.chrome對象?? 打破瀏覽器檢測

[英]MS Edge has a window.chrome object?? Breaks browser detection

MS Edge有一個名為window.chrome的對象與Google Chrome中的名稱相同。

對我而言,這打破了Chrome polyfill的瀏覽器檢測代碼。 我想象這也會給別人帶來麻煩。

使用:

邊緣:25.10586.0.0

Edgehtml:13.10586

Edge window.chrome對象中的東西較少。 它唯一的子對象是window.chrome.app,而Chrome版本有app,webstore和runtime(Chrome版本49.0.2623.110,64位)。

他們為什么要這樣做? 我可以看到制作一個合適的window.chrome對象具有所有功能,但制作一個殘缺的似乎它會比幫助任何東西造成更多的傷害。

誰遇到過這個? 我環顧四周,無法找到任何東西。 謝謝!

“你應該檢查功能而不是瀏覽器”

像是從未遇到過多個瀏覽器中存在的功能但在其出現的所有瀏覽器中無法運行或功能相同的人。

我自己最近的案例,我有一個小功能,在所有瀏覽器中工作至少12年,因為在Chrome存在之前。 該函數只會觸發在客戶端操作系統上注冊的自定義URL以運行外部處理程序。 因此,它只是在子_blank窗口中啟動自定義URL並立即關閉該子窗口。

function foo(stuff,otherstuff) {
  t = window.open("myproto://"+stuff,"_blank");
  t.close();
  window.location.replace("path/to/...?"+otherstuff);
}

Chrome,只有Chrome,最近才在2016年左右的某個時候更改了window.open(),以便它不再阻止,所以現在要解決我必須做的事情:

t = window.open("myproto://"+stuff,"_blank");
t.addEventListener('load',t.close());

好吧,不是世界末日,除了,並非所有瀏覽器都有這個功能......

等等,不要告訴我......“測試FEATURE !!!!”

我為什么不這么想? 也許是因為,猜猜是什么,Edge有這個功能,而且行為不正常。

所以我在谷歌搜索方法來檢測Chrome,BY NAME,原因。

我是否不僅要測試該功能的存在,還要構建某種實際嘗試調用該功能的測試,看看它是否正常工作? 我正在測試的事情恰好是窗口打開和關閉行為。 我不能彈出垃圾窗口,然后卡住並且不會自己關閉,每次加載該死的頁面,或者每次用戶點擊需要該功能的該死的按鈕時......

如果!!window.chrome不再可行,因為再一次Edge,那么我想回到這個完全的小丑我想:

var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;

我知道您已標記上述答案,但如果您確實想要通過Google檢測Google Chrome瀏覽器,我建議您使用以下內容:

var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM