自定义元素 Web 组件 Shadow DOM 供应商脚本/元素

2024-04-17

当与自定义元素 https://html.spec.whatwg.org/multipage/custom-elements.html#custom-elements那个杠杆影子 DOM https://dom.spec.whatwg.org/#shadow-trees,注入 3rd 方脚本和元素的官方方法是什么,例如隐形验证码 https://developers.google.com/recaptcha/docs/invisible需要这样的脚本:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>` 

对于 HTML 元素,例如<button>进行引导并呈现 reCAPTCHA?

shadowRoot似乎没有类似的东西head,该脚本是否应该添加到创建的template's innerHTML?或者是一个<script>通过以下方式附加到 ShadowRootappendChild in connectedCallback()?在 Shadow DOM 中使用第三方库的官方方法是什么?由于 Shadow DOM,在包含渲染的自定义元素的页面上加载脚本似乎不会触发渲染。

const template = document.createElement('template');
template.innerHTML = `
    <form>
        <button class="g-recaptcha" 
            data-sitekey="your_site_key" 
            data-callback='onSubmit'>Submit</button>
    </form>
`;

class CustomElement extends HTMLElement {
  constructor() {
    super(); // always call super() first in the ctor.
    this.attachShadow({mode: 'open'});
    this.shadowRoot.appendChild(template.content.cloneNode(true));
  }
  connectedCallback() {
    ...
  }
  disconnectedCallback() {
    ...
  }
  attributeChangedCallback(attrName, oldVal, newVal) {
    ...
  }
}

感谢您提供的任何指导。


没有官方方法因为解决方案取决于第三方库的实现。

但是,对于 reCaptcha,解决方法是公开<button>在普通 DOM 中,并通过以下方式将其注入到 Shadow DOM 中<slot>元素。

class extends HTMLElement {
    constructor() {
        super()
        this.attachShadow( {mode: 'open'} ).innerHTML= `
            <form>
                <slot></slot>
            </form>`                
    }

    connectedCallback() {
        this.innerHTML = `                  
            <button
                class="g-recaptcha"
                data-sitekey="your_site_key"
                data-callback="onSubmit">Submit</button>`
        }
    })
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义元素 Web 组件 Shadow DOM 供应商脚本/元素 的相关文章

  • 我应该如何引用角度自定义元素(Web 组件)中的资源

    我创建了一个 Web 组件 并从其中引用了我的资产文件夹中的图像 as below img src assets bot png alt 在本地一切都很好 我将自定义元素发布到 firebase 主机 并且 javascript css 和
  • 访问自定义元素的子节点?

    这可能有点令人困惑 我正在尝试从我的自定义元素访问innerHTML 或childNodes 是否可以从Web组件导入文件访问原始DOM结构 在 AttachShadow 之前 在下面的示例中 我尝试从 jookah gallery 导入文
  • 如何使用 PrimeFaces 验证码?

    我经历了用户指南 http www primefaces org documentation html和showcase http www primefaces org showcase ui captcha jsf但找不到在支持 bean
  • Shadow DOM 是否像 React.js 中的 Virtual DOM 一样快?

    在我的项目中实现 Shadow DOM 是否会让它们像 React 使用的虚拟 DOM 一样更快 它们是用于不同目的的不同事物 因此比较性能没有意义 虚拟DOM 虚拟 DOM 旨在避免对 DOM 进行不必要的更改 这种更改在性能方面代价高昂
  • 设置原生 Shadow DOM 元素的样式

    我一直相信您能够访问和覆盖 Shadow DOM 元素的样式 我看到了 html5rocks 上的文章 它定义了您可以使用哪些 webkit 特定选择器 http www html5rocks com en tutorials webcom
  • 阻止自动化工具访问网站

    我们网站上的数据很容易被窃取 我们如何检测是否有人正在查看网站或工具 一种方法是计算用户在页面上停留的时间 我不知道如何实施 任何人都可以帮助检测并防止自动化工具从我的网站上抓取数据吗 我在登录部分使用了安全图像 但即使如此 人们也可以登录
  • 谷歌 reCaptcha - [“缺少输入响应”,“缺少输入秘密”]

    我从 Google API 对 ReCaptcha RequestMethod Post php 进行了一些更改 class Post implements RequestMethod URL to which requests are P
  • lit-element Web Components 和 React 之间的主要区别[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 查看 React 代码 它似乎与 Lit Element 代码更相似 两者都可以用于创建 Web 组件
  • ReCaptcha 在 iPhone 上无法正常工作

    我有一个带有简单联系表格的网站 验证有点少 因为它不进入数据库 只是一封电子邮件 该表格的工作原理如下 有 5 个字段 其中 4 个为必填字段 提交将被禁用 直到 4 个字段有效 然后您才能提交 然后 所有内容都会在服务器上再次验证 包括验
  • Google reCAPTCHA、405 错误和 CORS 问题

    我正在使用 AngularJS 并尝试使用 Google 的 reCAPTCHA 我正在使用 显式呈现 reCAPTCHA 小部件 在我的网页上显示 reCAPTCHA 的方法 HTML 代码
  • Google REcaptcha 未显示

    我的中有以下内容 div class g recaptcha 这在我的 但无论是在 Firefox 还是 Chrome 上都没有显示任何内容 这是一个已知问题吗 确保是 head 标签关闭之前的最后一件事 这为我解决了同样的问题 div
  • 如何实现 Angular 的“盒子里的香蕉”与自定义元素的双向绑定?

    我正在尝试构建一个将由 Angular 应用程序使用的自定义元素 自定义元素将采用一个 prop 并可能对其进行操作 我的理解是我可以使用 盒子里的香蕉 来处理这个绑定 又名
  • 在 Meteor 应用程序中使用 Disqus / reCaptcha

    我正在开发一个使用 Meteor 的应用程序 我正在尝试在我的其中一个表单上使用 reCaptcha 并在我的某些页面上使用 Disqus 评论系统 但问题是 当我运行流星服务器时 这些都没有被渲染 以下是我添加到模板中的示例 Disqus
  • 如何获取 HTML5 输入来验证它们是否位于 Polymer Web 组件内?

    我正在使用 Polymer Web Components 我的应用程序以 Chrome 为目标 在我的表单上 在 Web 组件之外 我有一个输入类型 数字 当我在输入中输入 a 并提交表单时 我会收到一个工具提示 显示 请输入数字 但是 我
  • Shadow dom 内的 FontAwesome svg

    我正在尝试在 Web 组件中使用 font Awesome js svg 库 但图标不会显示 这可能吗 我正在尝试在现有的 webforms 项目中实现一个角度组件 而无需 css 和脚本 流血 关于如何做到这一点还有其他建议吗 ifram
  • iOS 中文本区域上的 Shadow DOM 强制填充

    我遇到了一个让我有点困惑的问题 我对此问题的参考是 Mac 上的 Chrome 32 和 iOS 7 0 4 上的 Safari 在以下示例中 Chrome 将文本呈现在 background and textarea元素完美且相互叠加 这
  • 页面速度洞察删除 Google Recaptcha 未使用的 JavaScript

    我有一个网站在 Google Page Speed Insights 上得分很高 但它显示了一个性能问题 并显示此文件的 删除未使用的 JavaScript https www gstatic com recaptcha releases
  • 同一页面中多个表单上的 Google 隐形 ReCaptcha - PHP

    我正在我的 php 网站上关注这个 Invisible ReCaptcha 文档 http www pinnacleinternet com installing invisible recaptcha http www pinnaclei
  • 在 ES5 中创建自定义元素 v1,而不是 ES6

    现在 如果您严格遵循自定义元素规范 v1 https html spec whatwg org multipage custom elements html custom elements 无法在不支持类的浏览器中使用自定义元素 有没有办法
  • 确定用户是否在shadow dom之外单击

    我正在尝试实现一个下拉菜单 您可以单击外部将其关闭 下拉列表是自定义日期输入的一部分 并且封装在输入的影子 DOM 内 我想写一些类似的东西 window addEventListener mousedown function evt if

随机推荐