创建并使用自定义 HTML 组件?

2023-12-06

我有以下本地 html:

<html>

<head>
  <link rel="import" href="https://mygithub.github.io/webcomponent/">
</head>

<body>
  <!-- This is the custom html component I attempted to create -->
  <img-slider></img-slider>
</body>

</html>

以及对模板的以下尝试:

<template>
  <style>
      .redColor{
        background-color:red;
      }
  </style>
  <div class = "redColor">The sky is blue</div>
</template>

<script>
  // Grab our template full of slider markup and styles
  var tmpl = document.querySelector('template');

  // Create a prototype for a new element that extends HTMLElement
  var ImgSliderProto = Object.create(HTMLElement.prototype);

  // Setup our Shadow DOM and clone the template
  ImgSliderProto.createdCallback = function() {
    var root = this.createShadowRoot();
    root.appendChild(document.importNode(tmpl.content, true));
  };

  // Register our new element
  var ImgSlider = document.registerElement('img-slider', {
    prototype: ImgSliderProto
  });
</script>

如中所述本文。当我运行代码时,我得到:

未捕获的类型错误:无法读取 null 的属性“内容” 在 HTMLElement.ImgSliderProto.createdCallback ((index):20)

换句话说document.querySelector('template');返回空值。是什么赋予了?

我的目标是创建自定义 html 元素并将其显示在链接模板代码的网站上。我 100% 确定我正确地提取了远程模板代码(显然,因为我在该代码中收到了错误)。

附:我使用的是最新的 Chrome,所以我不需要 polyfill。


尝试这个:

  var tmpl = (document.currentScript||document._currentScript).ownerDocument.querySelector('template');

您遇到的问题是模板并不是真正的一部分document但它是一部分currentScript。由于填充和浏览器的差异,您需要检查currentScript and _currentScript才能正常工作。

另请注意,HTML 导入永远不会完全跨浏览器。大多数 Web 组件正在转向基于 JavaScript 的代码,并将使用 ES6 模块加载进行加载。

有些东西可以帮助在 JS 文件中创建模板。使用反引号 (`) 是一种合理的方法:

var tmpl = document.createElement('template');
tmpl.innerHTML = `<style>
  .redColor{
    background-color:red;
  }
</style>
<div class = "redColor">The sky is blue</div>`;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

创建并使用自定义 HTML 组件? 的相关文章

随机推荐

  • Winforms - MVP 模式:使用静态 ApplicationController 来协调应用程序?

    背景 我正在构建一个两层 C net 应用程序 第 1 层 使用 MVP 模型 视图 呈现器 设计模式的 Winforms 客户端应用程序 第 2 层 位于实体框架和 SQL Server 之上的 WebAPI RESTful 服务 目前
  • xlib 有活动窗口事件吗?

    我正在尝试编写一个程序 使用 Xlib 跟踪活动窗口何时发生变化 我很难找出最好的方法来做到这一点 到目前为止 这些是我的想法 每秒使用 NET ACTIVE WINDOW 获取活动窗口 如果它已更改 则运行该事件的相关代码 获取所有窗口的
  • 构建入侵检测系统但从哪里开始

    我对入侵检测系统进行了很多搜索 但现在我很困惑 因为现在我应该从哪里开始 我不知道是否存在任何开源可重用代码 但我想用神经网络制作入侵检测和防御系统 从开发人员的角度来看 我的问题是我应该从哪里开始 请就这个话题指导我 我目前正在研究和分析
  • 对于无法解析的 IP 地址,Windows 上的反向 dns 查找会阻塞几秒钟

    我正在使用Java的InetAddress getHostName 执行一些反向 DNS 查找 但它所花费的时间似乎有问题 这是一个代码片段 public static void main String args throws IOExce
  • Angular 6.x Map 运算符对于具有 ActivatedRoute 的 Observable 不存在

    我最近遇到了一个问题 没有找到有关如何使其工作的提示 当我使用ActivatedRoute从我的路由获取数据时 角度无法编译并说Property map does not exist on type Observable
  • 在 Pygame 中实现二维空间中的平滑运动

    我想实现平滑的运动 加速到最大速度 然后在不按下任何键的情况下缓慢减速 类似于小行星中太空飞船的运动 这是我当前的运动代码 import pygame pygame init display pygame display set mode
  • 异常后继续合并

    是否可以继续MERGE后EXCEPTION MERGE INTO copy emp c USING employees e ON c employee id e employee id WHEN MATCHED THEN UPDATE SE
  • 32 位构建中出现“错误的代码生成,Boost 中的指针差异”错误

    在 Mac OS X 10 6 下 我正在构建一个链接到 boost 1 46 的 C 共享库 我正在使用随 Xcode 4 0 安装的命令行工具 64 位版本运行良好 构建 32 位时 我在链接时收到以下错误消息 ld bad codeg
  • 获取带有电子邮件 ID 的联系人

    我需要通过电子邮件获取联系人信息 光标 它们必须是不同的 如果每个联系人收到电子邮件 则必须有一个条目 怎么做 我的目标是 2 0 附带的新联系人 API 1 我尝试使用 CursorJoiner 来做到这一点 但是发生了奇怪的事情 这是我
  • iphone sdk 3.0中的MinimumOSVersion问题

    我已经安装了最新的 iphone sdk 3 0 beta 5 并尝试从该 sdk 提交第一个应用程序构建 但是当我上传到 itunes connect 时 它给我消息 您上传的二进制文件无效 为密钥提供的值 最低操作系统版本是不可接受的
  • Google云数据存储仅存储唯一实体

    我正在尝试使用 Google Datastore 学习 NoSQL 但遇到了唯一性问题 考虑一个电子商务商店 它有类别和产品 您不希望数据库中有两个具有相同 SKU 的产品 所以我用 JSON 插入一个实体 sku 1234 product
  • 如何获取 GL 库/标头?

    include
  • unicode 字符串中的内存位置

    我知道有人在我创作时解释了为什么 Python 2 7 中的相等 unicode 字符串 它们不指向内存中的同一位置 与 普通 字符串一样 gt gt gt a1 a gt gt gt a2 a gt gt gt a1 is a2 True
  • 将未知数量的字段输入到 mysql - 最佳结构?

    我需要存储从多个表单发送的数据 有趣的是 因为这些表单将由我计划向用户提供访问权限的表单生成器创建 我不知道表单中有多少个字段 或者用户将提交多少个字段 我考虑过类似于以下的表结构 表单本身保存为php以进行包含 FormId FormTy
  • 在asp.net core 1.0中创建RSS feed

    我正在 Asp net Core 1 0 MVC 6 工作 我正在尝试编写一个组件来从我的网站提供 RSS 提要 I found 这个帖子这表明 System ServiceModel Syndicate 尚未移植到 ASP NET COR
  • 正则表达式:如何匹配 RFC1918 私有 IPV4 地址范围中的 IP 地址(在 Python 中)?

    RFC1918 将私有 IPv4 地址定义为属于以下任意范围的地址 10 0 0 0 10 255 255 255 172 16 0 0 172 31 255 255 192 168 0 0 192 168 255 255 出于分析目的 我
  • Java Swing:所有 UIDefaults 属性的列表

    问题 在哪里可以获得 Swing 中存在的所有 UIDefaults 属性的列表 我知道可以编写一小段代码来提取并显示它们 但我想知道通过这种方式获得的列表是否真的完整 当我这样做时 我获得了 Metal L F 的 636 个属性 Win
  • 在notifyDataSetChanged后焦点发生变化之前,ListView不会显示更改

    我有一个AlertDialog with a ListView设置为多选就可以了 它还有一个Button on it The Button打开另一个AlertDialog如果确定 将从数据集中删除所选项目ListView 然后告诉列表视图的
  • 循环 VBScript

    我正在尝试运行 VBScript 检查时间 直到到达 22 00 晚上 10 点 然后运行shutdown bat 我总是收到诸如 loop without do 之类的错误 任何人都可以查看我的代码并看看是否有办法修复它 Do If Ho
  • 创建并使用自定义 HTML 组件?

    我有以下本地 html