gpt4 book ai didi

javascript - ReactJS 中的浏览器检测

转载 作者:可可西里 更新时间:2023-11-01 02:50:04 34 4
gpt4 key购买 nike

有没有办法用 React 检测 IE 浏览器并重定向到页面或提供任何有用的消息。我在 JavaScript 中找到了一些东西,但不确定如何将它与 React+TypeScript 一起使用。

var isEdge = !isIE && !!window.StyleMedia;

最佳答案

您走在正确的轨道上,您可以使用这些来有条件地呈现 jsx 或帮助路由...

我已经成功地使用了以下内容。

最初来自 - How to detect Safari, Chrome, IE, Firefox and Opera browser?

// Opera 8.0+
const isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
const isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ "[object HTMLElementConstructor]"
const isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === "[object SafariRemoteNotification]"; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

// Internet Explorer 6-11
const isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
const isEdge = !isIE && !!window.StyleMedia;

// Chrome 1 - 71
const isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);

// Blink engine detection
const isBlink = (isChrome || isOpera) && !!window.CSS;

请注意,由于浏览器的变化,它们都有可能被弃用。

我像这样在 React 中使用它们:

 content(props){
if(!isChrome){
return (
<Otherjsxelements/>
)
}
else {
return (
<Chromejsxelements/>
)
}
}

然后通过在我的主要组件中调用 {this.Content()} 来呈现不同的浏览器特定元素。

伪代码可能看起来像这样......(未经测试):

import React from 'react';

const isChrome = !!window.chrome && (!!window.chrome.webstore || !!window.chrome.runtime);

export default class Test extends React.Component {

content(){
if(isChrome){
return (
<div>Chrome</div>
)
} else {
return (
<div>Not Chrome</div>
)
}
}

render() {
return (
<div>Content to be seen on all browsers</div>
{this.content()}
)
}
}

关于javascript - ReactJS 中的浏览器检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49328382/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com