检测 Javascript 中的操作系统版本并重定向

2024-04-19

Good Day

我做了一些研究,发现你可以使用以下 javascript 来检测用户操作系统,无论是 Android、iOS、Windows 等:

var OSName="Unknown OS";
if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows";
if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS";
if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX";
if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux";

document.write('Your OS: '+OSName);

现在我想做的是根据用户的操作系统将用户重新定位到苹果应用商店或谷歌Play商店,如下所示:

HTML:

<a href="" id="redirect">Download our App</a>

以及相关的JS

if (OSName="MacOS" ){
$("#redirect").attr("href", "http://www.itunes.com/myapp")
}

elseif (OSName="Linux"){
$("#redirect").attr("href", "http://www.play.google.com/")
}
  (Linux is for Android right? )

这是正确/最好的方法吗/我的代码可以工作吗?

谢谢


您的代码可以简化:

var playStoreUrl = "http://www.play.google.com/",
    appStoreUrl  = "http://www.itunes.com/myapp",
    platform     = navigator.platform;

if (/mac/i.test(platform))
    $("#redirect").attr("href", appStoreUrl);
else if (/linux/i.test(platform))
    $("#redirect").attr("href", playStoreUrl);
else
    // Handle the case where the OS is neither MacOS nor Linux
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 Javascript 中的操作系统版本并重定向 的相关文章

  • Firebug 说“此页面上没有 Javascript”,即使页面上确实存在 JavaScript

    为什么Firebug说有No Javascript on this page当页面上明显有 JavaScript 负载时 我什至多次重新加载页面以确保但它仍然显示相同的消息 它以前从来没有这样做过 但突然间它就行为不当了 是因为某些配置问题
  • 重新加载页面时保持计时器(setInterval)运行

    加载网页后 我会通过控制台插入一些 Javscript 我想知道我是否可以使用 Javascript 或 jQuery 重新加载页面 不是从缓存 同时保留我正在运行的 setInterval 我熟悉 location reload 但这会终
  • 如何在 vue 组件的树视图中激活子类别?

    我有两个 vue 组件 我的第一个组件 父组件 如下所示
  • 转义双引号 JavaScript

    我试图在 iPhone 上查看时运行某种图像格式 在其他情况下运行一些 Flash 视频 var uagent navigator userAgent toLowerCase if uagent search iphone gt 1 doc
  • 保护客户端 API 的安全

    我正在为基于 JavaScript 的游戏构建服务器端 API 和客户端库 其中必须确保两个非常重要的功能的安全 用户每次游玩都必须扣款 我们必须确保提交的分数是玩家实际获得的分数 解决第一个问题看起来很简单 在每次游戏开始时 我们都会调用
  • 如何修复 Eslint 错误“prefer-destructuring”?

    我想像这样缩短 ES6 中的对象文字 const loc this props local 原因是loc foo 比打字容易得多this props local foo 但现在 ESLint 抱怨道 使用对象解构 prefer destru
  • 这个作用域/闭包什么时候在 javaScript 中被垃圾回收?

    我正在做一门课程 该课程正在讨论范围 闭包并简要提到垃圾收集 课程中提出一个问题 范围保持多久 答案是 直到 不再有任何提及它 是的 所以我们基本上说的是 是的 闭包有点像对隐藏范围对象的引用 所以只要有一些函数仍然有一个闭包 范围 该范围
  • 将数组传递给 include() javascript

    我试图找出一个字符串是否包含存储在数组中的多个字符串 includes 所以我尝试过 let string hello james console log string includes hello james 但它被返回为false 当我
  • 如何使用 JavaScript 或 jQuery 获取 html 元素的比例值?

    我想知道如何获得元素的比例值 我努力了 element css webkit transform 返回matrix scaleX 0 0 scaleY 0 0 有没有办法得到scaleX and scaleY only 找出文档和元素之间的
  • 如何为 HTML 验证提供自定义验证错误消息?

    当我使用默认 HTML 验证时 它会显示默认错误消息 这不是我想向客户显示的 我需要自定义消息并为每个验证提供不同的信息 例如最小 最大 类型和要求 例如 该字段为必填项 值不匹配 参考传统的HTML代码
  • 将数据发送到 parse.com 并更新 Angular $scope

    我正在将数据发送到 parse com 上的类 我想运行此函数并更新 scope无需重新加载视图 创建一个Programme运行下面的函数工作正常 但是有时在创建新程序后不会更新视图 并且需要刷新页面 当调用整个函数时 如底部所示 getP
  • onchange 选择框

    假设我们有 2 个不同的选择框 具有相同数量的选项
  • 如何将对象传递给 onclick 事件[重复]

    这个问题在这里已经有答案了 可能的重复 Javascript 循环内的事件处理程序 需要闭包吗 https stackoverflow com questions 341723 event handlers inside a javascr
  • vue中有自动更新这段代码的东西吗?

    我在导航器中找到了这个按钮 当用户登录时会显示该按钮 而当用户注销时该按钮就会消失 但现在我需要在按钮删除 出现之前刷新页面 这是我的代码 Button div div class div div
  • 是否可以模拟 isTrusted=true

    我希望在调用 touchStart 事件时能够模拟 isTrusted true 是否有任何库或任何类型的解决方法可以实现这一点 以下是我以编程方式运行 touchStart 时的输出与实际调用 touchStart 时的输出 我正在使用移
  • javascript 中的类和类名有什么区别?

    为了找到某个类名的子对象 我必须创建自己的辅助函数 findChildrenByTagName function obj name var ret for var k in obj children if obj children k cl
  • 如何暂时停止标题属性显示工具提示?

    我在右键单击时显示了一个弹出 div 我知道这会破坏预期的功能 但 Google 文档会这样做 所以为什么不呢 但是 我在弹出窗口上显示的元素有一个 标题 属性集 该属性集出现在我的分区 我仍然希望工具提示能够工作 但当弹出窗口出现时就不行
  • 如何以编程方式移动 OpenLayers Vector?

    API 文档为OpenLayers Feature Vector http dev openlayers org apidocs files OpenLayers Feature Vector js html说 Vector 本身根本没有方
  • 不透明的回复有哪些限制?

    不透明的回应 https fetch spec whatwg org concept filtered response opaque被定义为一部分获取API https fetch spec whatwg org 并表示向远程源发出请求的
  • JS 中的展开/休息运算符如何工作? [复制]

    这个问题在这里已经有答案了 我正在努力完全理解扩展 休息运算符在 JS 中的工作原理 我已经阅读了 MDN 文档 但我仍然不完全清楚 我在下面提供了一个示例 我在其中使用了它并且它按预期工作 const users name Samir a

随机推荐

  • 如何在 MVC 中通过 JQuery 调用 HttpHandler

    我以前没有在 MVC 中使用过 httpHandlers 但是我想在我的应用程序中停止会话超时 我在这里找到了解决方案 http www dotnetcurry com ShowArticle aspx ID 453 http www do
  • .net 中 Tuple(T1)/Singleton 的用途是什么?

    net 4 中的元组类型之一是单元素元组 http msdn microsoft com en us library dd384265 aspx 我只是想知道这个结构的目的是什么 我看到的唯一用途是在使用时8 Tuple http msdn
  • 使用 RecursiveDirectoryIterator 在顶部按最新日期对文件进行排序

    现在默认情况下它按字母表显示 我不希望这样 我想使用以下方式对文件进行排序递归目录迭代器最新文件位于顶部 按降序排列 还使用if 条件比较日期并获取该日期的文件
  • 设置预定义的节点样式?

    在过去的 15 分钟里 我一直在谷歌上搜索 试图找到这个问题的答案 但我似乎无法弄清楚 我的任务是为我在工作中开发的一些应用程序构建一些小流程图 他们不需要任何花哨的东西 因为他们将在 vizio 中将其转换为他们喜欢的格式 他们甚至说我们
  • VB6 UDT 自检

    我有一种感觉 这个问题的答案将是 不可能 但我会尝试一下 我的处境并不令人羡慕 需要修改旧版 VB6 应用程序并进行一些增强 转换为更智能的语言不是一个选择 该应用程序依赖大量用户定义类型来移动数据 我想定义一个通用函数 它可以引用任何这些
  • PHPStorm + XDebug 设置演练

    直到最近 我一直在用 PHP 通过 Notepad 编写代码 并通过检查 IIS 中的日志进行调试 一定喜欢那个 Web 平台安装程序 从那时起 我决定更新到更高效的代码编写 测试环境 并在使用 PHPStorm 玩了一会儿之后 决定购买它
  • 使 Chart.js 在悬停时在散点图中的点之间呈现一条线

    我有一个包含两个数据集的简单散点图 active and passive const data datasets label Active sentences A1 A2 A3 data 0 4340433805869016 0 12813
  • 如何在输入中使用 angular2 datepipe

    我有一个来自我的服务器的日期字符串 如下所示 1992 05 26T18 30 00Z 我正在尝试使用日期管道将其格式化为 DD MM YYYY 格式并将其绑定到我的输入 ngModel var userdate any new Date
  • 如何在没有互联网的情况下安装 angular-cli

    如果你只有 zip 文件来安装 angular cli 如何在没有互联网连接的情况下安装它 有了那个邮政编码只有你不会能够实现这一点 因为在bin文件夹 将ng仍然需要一些依赖 为了做到这一点 从官方存储库下载 zip https gith
  • Gradle 未针对 Firebase 云消息传递进行编译

    我注意到 Firebase API 已从 v 9 0 0 升级到 v 9 0 1 因此决定对此进行更改 然而 它并没有引起人们的注意 这是 Gradle Logcat 中的错误 Error 25 13 Failed to resolve c
  • 如果没有 sudo,则无法在 Qt 应用程序中使用键盘

    我有一个在 BeagleBone Black 上运行的交叉编译的嵌入式 Qt 应用程序 它工作正常 但有一件事 如果我不直接在 BeagleBone Black 上运行 它不接受键盘输入sudo 这是一个问题 因为 我无法远程调试应用程序并
  • 如何将多个 Range 对象合并为一个,用作图表源

    我正在尝试制作一个图表 其中多列作为源区域 基本上 我想选择特定的列 跳过一些列 然后将它们全部合并到一个范围中 我设置了一个循环 在其中创建一个范围 并将其地址附加到一个字符串中 并用逗号分隔它们 我很确定这就是 Excel 想要的格式
  • 无法添加自定义 Sonos 服务的帐户

    我创建了 Sonos 音乐服务 并使用 Customsd 将其添加到我的扬声器中 两个端点 URL 常规和安全 均可用 服务已成功添加到扬声器 使用 SoapUI 我可以发送 GetSessionId 的 https 请求 它会返回有效的响
  • textbox1.Text 无法从另一个表单复制 textbox2.Text 值[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 下面是我的代码 private void btnCptKb5 Click object sender EventArgs e Form1 f
  • 最大重叠矩形数

    我看过这个面试问题 但不知道如何回答 给定 N 个矩形 找出重叠矩形的最大数量 例如 对于左下点和右上点表示的矩形 1 1 3 3 2 2 4 4 1 3 2 4 2 2 3 3 返回 3 因为前两个和最后一个矩形重叠 我可以想到一个时间复
  • 努力绑定 tkinter 文本小部件中的标签

    我在 tkinter 模块中的文本小部件上遇到了一些困难 我添加了尝试将函数绑定到的标签 无论我如何输入 它都会发生以下两种情况之一 我可以单击文本小部件 但弹出的唯一功能是最后一个项目 无论我单击何处 第二件事是它会自动输出所有功能 对原
  • 使用 PIVOT 选择列值作为列

    我有一个场景 我希望将每个唯一列值 Val2 的列值 Val1 显示为单个列 最多 10 列 CREATE TABLE TEMP1 Val1 NVARCHAR 4 Val2 NVARCHAR 10 insert into Temp1 Val
  • 如何确定 .NET 中显示器的真实像素大小?

    我想在我的应用程序中以 真实尺寸 显示图像 为此 我需要知道显示器的像素大小 我知道 Windows 显示分辨率名义上是 96dpi 但出于我的目的 我想要更好的猜测 我知道这些信息可能并不总是可用或准确 例如较旧的 CRT 显示器 但我想
  • 如何覆盖 Material-UI MenuItem 选择的背景颜色?

    目前我正在努力设置背景颜色MenuItem选择不同颜色的组件 无需使用 important 来强制执行 组件代码
  • 检测 Javascript 中的操作系统版本并重定向

    Good Day 我做了一些研究 发现你可以使用以下 javascript 来检测用户操作系统 无论是 Android iOS Windows 等 var OSName Unknown OS if navigator appVersion