为什么捐赠
API 浏览器
平台检测

Quasar 内置了帮助程序来检测代码运行所在的平台(及其功能)。

提示

根据您的需要,您可能还想查看 样式与标识 > 可见性 页面,了解如何仅使用 CSS 即可实现相同的效果。 后一种方法将渲染您的 DOM 元素或组件,而不管平台如何,因此请明智地选择如何处理应用程序的性能。

加载平台 API...

用法

在 Vue 组件 JS 中使用

import { useQuasar } from 'quasar'

setup () {
  const $q = useQuasar()

  $q.platform.is.mobile
}

在 Vue 组件模板中使用

$q.platform.is.cordova

在 Vue 组件外部使用时,必须导入它

import { Platform } from 'quasar'

Platform.is 本身返回一个包含有关当前平台详细信息的对象。 例如,在 MacOS 桌面机器上运行 Chrome 时,Platform.is 将返回类似以下内容

{
  chrome: true,
  desktop: true,
  mac: true,
  name: "chrome",
  platform: "mac",
  version: "70.0.3538.110",
  versionNumber: 70,
  webkit: true
}

现在,假设我们希望根据代码运行的平台渲染不同的组件或 DOM 元素。 我们想在桌面显示某些内容,在移动设备上显示其他内容。 我们将按如下方式进行

<div v-if="$q.platform.is.desktop">
  I'm only rendered on desktop!
</div>

<div v-if="$q.platform.is.mobile">
  I'm only rendered on mobile!
</div>

<div v-if="$q.platform.is.electron">
  I'm only rendered on Electron!
</div>
您的设备



属性

以下属性可用于 Platform 对象。 不过,这不是详尽的列表。 有关更多详细信息,请参阅下面的 API 部分。

属性类型含义
Platform.is.mobile布尔值代码是否在移动设备上运行?
Platform.is.cordova布尔值代码是否在 Cordova 中运行?
Platform.is.capacitor布尔值代码是否在 Capacitor 中运行?
Platform.is.nativeMobile布尔值代码是否在原生移动包装器(Cordova/Capacitor)中运行?
Platform.is.nativeMobileWrapper字符串原生移动包装器的名称('cordova''capacitor'undefined
Platform.is.electron布尔值代码是否在 Electron 中运行?
Platform.is.desktop布尔值代码是否在桌面浏览器上运行?
Platform.is.bex布尔值代码是否在浏览器扩展中运行?
Platform.is.android布尔值应用程序是否在 Android 设备上运行?
Platform.is.blackberry布尔值应用程序是否在 Blackberry 设备上运行?
Platform.is.cros布尔值应用程序是否在安装了 Chrome OS 操作系统的设备上运行?
Platform.is.ios布尔值应用程序是否在 iOS 设备上运行?
Platform.is.ipad布尔值应用程序是否在 iPad 上运行?
Platform.is.iphone布尔值应用程序是否在 iPhone 上运行?
Platform.is.ipod布尔值应用程序是否在 iPod 上运行?
Platform.is.kindle布尔值应用程序是否在 Kindle 设备上运行?
Platform.is.linux布尔值代码是否在安装了 Linux 操作系统的设备上运行?
Platform.is.mac布尔值代码是否在安装了 MacOS 操作系统的设备上运行?
Platform.is.win布尔值代码是否在安装了 Windows 操作系统的设备上运行?
Platform.is.winphone布尔值代码是否在 Windows Phone 设备上运行?
Platform.is.playbook布尔值代码是否在 Blackberry Playbook 设备上运行?
Platform.is.silk布尔值代码是否在 Kindle Silk 浏览器中运行?
Platform.is.chrome布尔值代码是否在 Google Chrome 浏览器中运行?
Platform.is.firefox布尔值代码是否在 Firefox 浏览器中运行?
Platform.is.opera布尔值代码是否在 Opera 浏览器中运行?
Platform.is.safari布尔值代码是否在 Apple Safari 浏览器中运行?
Platform.is.vivaldi布尔值代码是否在 Vivaldi 浏览器中运行?
Platform.is.edge布尔值代码是否在 Microsoft Edge 浏览器中运行?
Platform.is.ie布尔值代码是否在 Microsoft Internet Explorer 浏览器中运行?
Platform.is.webkit布尔值代码是否在 Webkit 或基于 webkit 的浏览器上运行?
Platform.has.touch布尔值代码是否在支持触摸的屏幕上运行?
Platform.within.iframe布尔值应用程序是否在 IFRAME 中运行?

提示

在移动设备上运行表示您的代码可以在移动设备(手机或平板电脑)上运行,但使用的是浏览器,而不是 Cordova 包装器。

关于 SSR 的说明

在构建 SSR 时,仅使用 $q.platform 形式。 或者,在服务器端,以下是如何使用它的另一个示例

import { Platform } from 'quasar'

// you need access to `ssrContext`
function (ssrContext) {
  const platform = process.env.SERVER
    ? Platform.parseSSR(ssrContext)
    : Platform // otherwise we're on client

  // platform is equivalent to the global import as in non-SSR builds
}

ssrContext 可用于 @quasar/app-vite 启动文件@quasar/app-webpack 启动文件。 以及在 @quasar/app-vite 预取@quasar/app-webpack 预取 功能中,其中它作为参数提供。

这样做的原因是在仅限客户端的应用程序中,每个用户都将在其浏览器中使用应用程序的新实例。 对于服务器端渲染,我们希望相同:每个请求都应该具有一个新的、隔离的应用程序实例,以便没有跨请求状态污染。 因此,Platform 需要单独绑定到每个请求。