如何检查浏览器是否支持 Polymer?

2023-12-22

我如何检查(JS 或 HTML 代码)当前浏览器是否支持 Polymer?


简短回答:

快速测试:Firefox 38.0.5 提示“否”,而 Chrome 44.0.2403.130 m 提示“是”

function supportsPolymer() {
  return 'content' in document.createElement('template') && 'import' in document.createElement('link') && 'registerElement' in document && document.head.createShadowRoot;
}

if(supportsPolymer()) {
  
  //Good to go
  alert("Yes");
  
} else {
  
  //Is not supported
  alert("No");
  
}

详细解答:

你必须检查一下这个清单 https://www.polymer-project.org/0.5/resources/compatibility.html在聚合物的网站上。

  • Template
  • HTML 导入
  • 自定义元素
  • 影子 DOM

必须支持这些功能:

  • http://www.html5rocks.com/en/tutorials/webcomponents/template/ http://www.html5rocks.com/en/tutorials/webcomponents/template/
function supportsTemplate() {
  return 'content' in document.createElement('template');
}

if (supportsTemplate()) {
  // Good to go!
} else {
  // Use old templating techniques or libraries.
}

  • https://www.polymer-project.org/0.5/platform/html-imports.html https://www.polymer-project.org/0.5/platform/html-imports.html
function supportsImports() {
  return 'import' in document.createElement('link');
}

if (supportsImports()) {
  // Good to go!
} else {
  // Use other libraries/require systems to load files.
}

  • https://www.polymer-project.org/0.5/platform/custom-elements.html https://www.polymer-project.org/0.5/platform/custom-elements.html
function supportsCustomElements() {
  return 'registerElement' in document;
}

if (supportsCustomElements()) {
  // Good to go!
} else {
  // Use other libraries to create components.
}

  • https://www.polymer-project.org/0.5/platform/shadow-dom.html https://www.polymer-project.org/0.5/platform/shadow-dom.html

如何检查浏览器是否支持 Shadow DOM https://stackoverflow.com/questions/29730398/how-to-check-if-a-browser-supports-shadow-dom

if(document.head.createShadowRoot) {
    // I can shadow DOM
} else {
    // I can't
}

在一个函数中:

 function supportsShadowDom() {
   return document.head.createShadowRoot;
 }

未经测试的版本采用前面片段的风格:

 function supportsShadowDom() {
   return 'createShadowRoot' in document;
 }

好的,在实现每个功能后,您可以执行以下操作:

 if (supportsCustomElements() && supportsTemplate() && supportsImports() && supportsShadowDom()) {
   // Good to go!
 } else {
   // Use other libraries to create components.
 }

这是当前矩阵https://github.com/WebComponents/webcomponentsjs#browser-support https://github.com/WebComponents/webcomponentsjs#browser-support:

<table><thead>
<tr>
<th>Polyfill</th>
<th align="center">IE10</th>
<th align="center">IE11+</th>
<th align="center">Chrome*</th>
<th align="center">Firefox*</th>
<th align="center">Safari 7+*</th>
<th align="center">Chrome Android*</th>
<th align="center">Mobile Safari*</th>
</tr>
</thead><tbody>
<tr>
<td>Custom Elements</td>
<td align="center">~</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
</tr>
<tr>
<td>HTML Imports</td>
<td align="center">~</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
</tr>
<tr>
<td>Shadow DOM</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
</tr>
<tr>
<td>Templates</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
<td align="center">✓</td>
</tr>
</tbody></table>

这可能也很有趣:https://github.com/webcomponents/webcomponentsjs/issues/26 https://github.com/webcomponents/webcomponentsjs/issues/26

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查浏览器是否支持 Polymer? 的相关文章

  • 如何告诉 Sonar 使用我的可靠报告来获取单元测试结果

    我们有一个 Jenkins 作业 其中包含一堆 javascript 文件 我们通过 grunt 构建项目 并在构建结束时运行 JSCover 来运行单元测试并收集代码覆盖率 这一切都有效 我们得到了一个不错的 LCOV 文件 并且在 ta
  • 切换 Ag-Grid 中的浮动过滤器?

    我试图通过开关或按钮单击来确定浮动过滤器的显示 看起来很简单 我应该能够在 true 和 false 之间切换 将该值提供给网格选项中的浮动过滤器 然后刷新标题 对吗 不幸的是 网格似乎总是落后一步 当我第一次点击时 什么也没有发生 当我将
  • Karma Webpack - 错误:找不到模块“./test/utilities.js”

    我正在使用 Karma Webpack 进行项目的单元测试 当我跑步时karma start 我有这个错误 Error Cannot find module test utilities js at myproject test campa
  • 为什么这个 fs.readFile 循环没有将其结果推送到我的数组? [复制]

    这个问题在这里已经有答案了 usr bin env node var fs require fs async require async program require commander program version 0 0 1 usa
  • 在没有 Flash 的情况下用 HTML / js 录制音频?

    从麦克风录制音频并将 ajax 发回服务器 真的不知道如何在 Flash 中做到这一点 并希望它保持简单 目前还没有浏览器实现WHATWG 设备 API http www whatwg org specs web apps current
  • 我们可以为 border-bottom 属性设置渐变颜色吗? [复制]

    这个问题在这里已经有答案了 我们可以添加渐变颜色吗border bottomhtml块元素的属性 边框应该与此类似 谁能告诉我这在 CSS3 中是可能的吗 我像这样尝试过 但无法让它工作 border gradient border bot
  • 在浏览器开发工具中看不到SignalR流量

    我构建了使用 SignalR 的服务器和客户端代码 该网站运行完美 但我无法在任何浏览器 chrome IE Firefox 中看到网络流量 我知道网络流量在那里 因为该网站正在运行 有没有办法在浏览器中查看 SignalR 流量 如果不是
  • 如何在 Electron 中使窗口大小响应。 (打开应用程序时)

    我最近开始在 Electron 上制作一个应用程序 我想让窗口具有响应能力 例如 如果我在不同的屏幕上打开应用程序 它应该根据屏幕尺寸以全尺寸打开 我的代码 app on ready gt const htmlPath path join
  • 如何拆分字符串,在特定字符处断开?

    我有这个字符串 john smith 123 Street Apt 4 New York NY 12345 使用 JavaScript 将其解析为最快的方法是什么 var name john smith var street 123 Str
  • 链接index.html client.js 和 server.js

    我从 Node js 开始 我的第一个程序已经遇到了问题 下面是我正在使用的代码 索引 html
  • 未处理的 Promise 拒绝:push.on 不是函数

    我正在使用离子2 我得到这个打字稿error当尝试设置推送通知时 我从教程中复制了此示例代码 因此预计它可以工作 我一定有什么问题 任何想法请 Unhandled Promise rejection push on is not a fun
  • Backbone.View:delegateEvents 未将事件重新绑定到子视图

    我已将这个问题分解为尽可能小的示例 即 它只是为了演示问题 不一定代表现实世界的场景 假设我有一个父视图 此处为 MainView 其中包含一个子视图 此处为 SubView 如果在任何时候我需要重新渲染父视图 从而重新渲染子视图 我就会丢
  • Firebase 停止监听 onAuthStateChanged

    从版本 3 0 0 开始 我很难删除身份验证状态更改侦听器 要根据文档启动侦听器 firebase auth onAuthStateChanged function user handle it 但是 我在文档中找不到任何涉及删除身份验证状
  • 带搜索框的 D3 图表

    我在 D3 中创建了一个图表 其中节点显示特定个人创建文档的时间 该图表还显示了一个搜索框 该搜索框根据搜索框输入是否与与该文档关联的单词匹配而将节点变成红色 这些单词列在数据集的第 5 列中 请参阅下面的数据集 我的问题 一旦将搜索输入到
  • 使用 CSS flexbox 重叠两个居中元素

    我试图将两个元素绝对居中于页面中间 一个元素在另一个元素后面 目的是让页面完全响应 中间有一个圆圈 后面有一个脉冲效果 这是一个小提琴 http jsfiddle net Fy8vD 2003 以下的 html body height 10
  • 使用 Python 和 lxml 从 HTML 中删除类属性

    Question 如何使用 python 和 lxml 从 html 中删除类属性 Example I have p class DumbClass Lorem ipsum dolor sit amet consectetur adipis
  • React Native:当您的应用程序关闭时是否有回调函数?

    我有一个 setInterval 即使您关闭 而不是退出 应用程序也会继续运行 我想在我的应用程序关闭或设备进入睡眠状态时调用一个函数 以便清除 setInterval AppState 是你的朋友 看看AppState 的文档 https
  • JQuery 循环遍历动态元素并获取数据值

    我正在尝试使用可折叠面板来完成我的要求 sport on click function var thisId this attr id var thisChildren this sportlist thisChildren each fu
  • 如何将 JSLint 用于依赖于 JQuery 的代码段?

    我对 Javascript 比较陌生 我想通过 JSLint 运行我周末玩的那段代码 这样它就可以指出我在哪里是个十足的白痴 不幸的是 我收到了大量关于缺少函数声明的错误 这些函数声明是 JQuery javascript 库及其各种插件的
  • 如何使相对div居中?

    我一直在尝试让以下代码工作几个小时 但没有成功 您能帮我将项目 div 居中吗 即使页面放大和缩小时 这是我的 HTML 和 CSS bottom position absolute top 100 left 0 right 0 backg

随机推荐

  • 在for循环中运行replace()方法?

    已经很晚了 我一直在尝试编写一个简单的脚本 将点云数据重命名为工作格式 我不知道我做错了什么 因为底部的代码工作正常 为什么for循环中的代码不起作用 它将其添加到列表中 但它只是没有被替换功能格式化 抱歉 我知道这不是调试器 但我真的很困
  • 如何使用 Gmail 中的标签来识别单个邮件而不是已由脚本处理的线程

    使用 google 邮件脚本 我尝试使用 API 将带有某些标签的新电子邮件上传到我们的 CRM 我无法检查邮件是否已上传 因此我必须在邮箱中为之前已处理过的邮件应用标签 不幸的是 谷歌脚本只允许您在线程级别添加或检查标签 由于新消息可以在
  • 使用 sqlplus 检索大型 clob 数据

    如何使用 sqlplus 将大 clob 数据从表中完全检索到标准输出 有一种方法可以使用特定于语言的数据库 API 来完全获得它 但是当我尝试纯粹使用 sqlplus 来获取它时 我遇到了几个问题 例如 输出缓冲区太小 最大 4000 字
  • Xamarin:应用程序未安装问题

    当我在 Android 移动设备上以调试模式安装应用程序时 它似乎已安装 但是 在签署应用程序并发布后 它并未安装在我的手机上 释放模式 它说 应用程序未安装 我尝试了一些方法但无法解决这个问题 我还用另一个密钥库进行了测试 但仍然无法安装
  • 将匿名侦听器与 C# 和垃圾收集中的事件分离

    假设我有一个名为 Dialog 的类 它扩展了 Form 对话框上有一个文本框和一个 确定 按钮 当用户单击 确定 时 文本框值将通过事件返回 public class Dialog Form public delegate void on
  • 命令替换中的 Heredoc:引号或括号不平衡时出错(bash 和 zsh)

    考虑以下用于打印单引号的混淆脚本 该脚本适用于ksh bin ksh echo cat lt
  • Hive Utf-8 编码支持的字符数?

    您好 实际上问题如下 我想要插入到 hive 表中的数据包含拉丁单词 并且采用 utf 8 编码格式 但 hive 仍然无法正确显示 Actual Data 数据插入到hive中 我将表的编码更改为 utf 8 下面的 hive DDL 和
  • FFMPeg 异常 setDataSource 失败:状态 = 0xFFFFFFFF

    我有 175 个 mp4 文件 当我处理从索引 0 到索引 65 或 66 的文件时 出现异常 java lang IllegalArgumentException setDataSource failed status 0xFFFFFFF
  • 使用NSVisualEffectView时如何添加按钮

    我使用创建了一个窗口NSVisualEffectView获得模糊和圆角 喜欢here https stackoverflow com q 42762856 7517228 问题是当我有时我在窗口中看不到我的按钮NSVisualEffectV
  • 未捕获的类型错误:$this.text 不是函数

    这段代码中的第二条语句 var this this children div submenu1 children a subtile 0 title this text name this attr node val 产生这个错误 Unca
  • Java TreeMap 相当于 C# 吗?

    我咨询过的大多数地方都说使用SortedList 但问题是我正在移植的程序实际上使用了重复的键 按顺序区分 这是TreeMap允许的 但SortedList不允许 有什么建议吗 Does 排序字典 http msdn microsoft c
  • ASIHTTPRequest 的 XML 解析器

    我可以使用什么 XML 解析器库最适合解析 ASIHTTPRequest 响应中的 XML 响应字符串 这也很容易设置并且很容易理解 确实需要立即得到项目结果 Thanks 按照这个 如何在 Objective C 中解析 XML http
  • 如何使用 volley 库 android 执行简单的异步任务

    如您所知 Google 发布了一个新的库 Volley 来管理基于 HTTP 协议的网络请求 但是如果我想使用这个库连接到 mysql db 目前我正在使用异步任务来进行网络调用 如何实现volley库来执行异步任务 任何链接或示例 抱歉英
  • 获取 std::future 的状态

    是否可以检查是否std future完成与否 据我所知 唯一的方法就是打电话wait for持续时间为零并检查状态是否为ready或者没有 但是有更好的方法吗 你是对的 除了打电话wait until对于过去的时间 相当于 没有更好的方法
  • jQuery 将类的一部分与 hasClass 匹配

    我有几个带有 project 0 9 类的 div div class project1 div div class project2 div div class project3 div div class project4 div 我想
  • 为 Eclipse 本身(平台)启用控制台日志记录

    我的 JVM JRE 和 Eclipse 本身有问题 我正在 Windows 8 1 下使用 IBM JVM 运行 Juno 版本 当我尝试从 https P2 URL 访问 安装新软件时 收到以下错误消息 javax net ssl SS
  • Android Q - 未经批准连接wifi

    我正在开发一个自动连接到 Wifi 的应用程序 您会在下面找到我的代码 效果很好 class MainActivity AppCompatActivity override fun onCreate savedInstanceState B
  • 从 ElasticBeanstalk EC2 到 Redis (ElastiCache) 的连接失败

    我们使用 ElasticBeanstalk 来设置一些 Node js 环境 目前 我们使用 Redis 作为会话存储 它设置在 ElastiCache 中 当我 ssh 进入 EC2 实例并 netcat Redis 存储时 我可以确认网
  • C# 泛型接口协方差

    我不确定这里发生了什么 但我使用以下代码收到编译器错误 namespace SO interface IUser
  • 如何检查浏览器是否支持 Polymer?

    我如何检查 JS 或 HTML 代码 当前浏览器是否支持 Polymer 简短回答 快速测试 Firefox 38 0 5 提示 否 而 Chrome 44 0 2403 130 m 提示 是 function supportsPolyme