javascript - HTML/JS:扩展/覆盖原生 html 元素
问题描述
由于原生 html 元素的许多限制,我想知道是否可以使用 Web 组件扩展原生 html 元素并拥有自己的自定义行为。我已经看过有关此的页面,但是示例非常简单且薄弱,例如为锚标记添加确认。我不是在谈论添加一些简单的东西,我想修改行为。我希望数据列表始终显示所有选项元素,甚至有我自己的过滤逻辑。我永远找不到这些本机元素的实现代码,所以我无法尝试。
创建自定义元素不是一种选择(除非用于扩展本机元素)。在我的公司,我们将 openfin 用于小型 Web 应用程序。我们使用原生数据列表,因为我们需要我们的元素能够扩展到视口边界之外(自定义的东西会被剪掉)。
解决方案
下面是 webcomponents 介绍的链接:
https
://www.webcomponents.org/introduction
在该页面中,他们有指向如何实现它们的示例的链接,如下所示:
https ://www.npmjs.com/package /@polymer/paper-button
前面的信息应该让您了解所需的实现和依赖关系。您可以通过脚本添加不同的功能,甚至可以通过 CSS 进行更多修改。
即使 Web 组件基于现有的 Web 标准,它们的使用也可能需要一些跨站点通信,有时脚本/垃圾邮件拦截器可能不允许它们。由于兼容性和前面提到的,在 HTML 标准和 DOM 规范(规范)完全采用之前,我避免使用它们。
为了让它更有趣,这个 HTML 标准和 DOM 规范可以随时更改。
对于 HTML 标准:
https ://html.spec.whatwg.org/
https://www.w3.org/standards/webdesign/htmlcss
对于 DOM 规范:
https ://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction
http://www.w3.org/DOM/
https://dom.spec.whatwg.org /
来自该领域一段时间的人的建议(我):
- 随着事情的变化,使用您可以在当前设备/浏览器上使用的东西。
- 类似的 webcomponents 行为/感觉/外观可以通过 HTML/CSS/Javascript 的组合来实现。
- 如前所述,事情发生了变化,学习新的东西并没有错,因为下面的这个实验性 web 组件(它们可能会或可能不会实现):
https ://www.webcomponents.org/author/fs-webcomponents
在另一个答案中,我包含了一个带有我创建的旧列表的片段。
我希望这些信息对您有所帮助或将您带到可能有帮助的其他信息。
最好的问候,
拉蒙
推荐阅读
- java - 我无法弄清楚我的代码、队列和 java 中的某些部分
- java - 如何在 Java 中设置截止日期而不对值进行硬编码
- sql - 如何在选择其他列时明确选择一列
- html - 为什么我的 gridview ASP.NET 中有一个
- intellij-idea - 我们可以在 IJ IDE 的不同窗口中打开项目模块吗?
- javascript - 如何控制描述块中 beforeAll 块的执行顺序
- java - 通过 Azure Devops 管道中的 Appcenter 任务执行 Appium 测试用例
- html - 如何从 html 传递属性值
- oracle-sqldeveloper - Oracle Sqldeveloper:命令行“连接名称”创建
- javascript - 什么是名称冲突以及 ES6 符号如何避免属性之间的名称冲突?