- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个 Web 组件,并希望访问元素 来自 组件。
我正在使用 .attachMode({mode:'closed'}),因此父级无权访问。
<template id='hello-world-template'>
<span id='inside'>Unchanged,</span> <span id='outside'>Unchanged</span>
<script>
document.querySelector('#inside').innerHTML = 'Changed';
// Ideal, but does not work - no such element
</script>
</template>
<hello-world></hello-world>
<script>
customElements.define('hello-world',
class extends HTMLElement {
constructor() {
super();
var template = document.getElementById('hello-world-template')
var clone = template.content.cloneNode(true)
const shadowRoot = this.attachShadow({mode: 'closed'}).appendChild(clone);
}
connectedCallback() {
this.shadowRoot.querySelector('#outside').innerHTML = 'Changed';
// Not ideal, and also does not work - this.shadowRoot has no querySelector
}
});
</script>
<template id='hello-world-template'>
<span id='inside'>Unchanged,</span> <span id='outside'>Unchanged</span>
<script>
function runner(img){
let doc = img.parentNode;
doc.querySelector('#inside').innerHTML = 'Changed';
}
</script>
<img src='data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=' onload="runner(this)">
</template>
<hello-world></hello-world>
最佳答案
看起来您在元素引用和 this
中都有错误范围(在 <script>
中)
const shadowRoot = this.attachShadow({mode: 'closed'}).appendChild(clone);
appendChild
是你的克星。
#document-fragment
(克隆模板)
const shadowRoot = this.attachShadow({mode: 'closed'});
shadowRoot.appendChild(clone);
mode:closed
将不是 分配 this.shadowRoot
.. this.Root = this.attachShadow({mode: 'closed'});
this.Root.appendChild(clone);
connectedCallback() {
this.Root.querySelector('#outside').innerHTML = 'Changed';
}
this.Root
可通过所有/任何方法访问
里面 组件
<script>
在
<template>
内(这个范围)
<template id='hello-world-template'>
<span id='inside'>Unchanged</span>
<script>
document.querySelector('#inside').innerHTML = 'Changed';
// Ideal, but does not work - no such element
</script>
</template>
document
可以
不是 访问元素
里面 任何组件 shadowDOM
mode:closed
无关紧要或
mode:open
<script>
范围 将是
window
(因为它没有被分配一个范围)
<script>
内的组件范围你必须有创意..
img onload=
“黑客”
onload
在
<style>
element 让它少了一点黑客攻击(恕我直言)
<template id='hello-world-template'>
<span id='inside'>Inside Unchanged,</span>
<script>
function templFunc() {
// this scope is the shadowRoot, not the component!
this.querySelector('#inside').innerHTML = 'Changed';
}
</script>
<style onload="templFunc.apply(this.getRootNode())">
#inside{
color:green;
}
</style>
</template>
<hello-world>
执行元素!!
v72.0.2
行为不端:
onload
在 <STYLE>
元素只会为 触发第一个元素 <img>
更改了 JSFiddle 以使用您的第一个 hack , 它为每个元素触发 templFunc()
在 shadowDOM 中加载/作用域,因此可以从组件方法调用(参见 JSFiddle)window
范围
let
变量
关于javascript - 从 Shadow DOM 中访问元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60097743/
我无法创建另一个父 div 容器,是否可能仅使用 css 技巧?盒子阴影:7px 7px 7px 黑色;只会从右边框和底边框创建阴影,但我也需要左边框和上边框。 最佳答案 盒子阴影有4个参数;偏移量、
我刚遇到一个有趣的情况,我有一个提交 放置在 内的 native 自定义元素的 Shadow DOM 内. Select #shadow-root ...
假设我们有一些 CSS 代码,例如动画 CSS 加载器,我们希望在所有使用 Shadow DOM 的 Web 组件中使用它。如果我们无法像 ::shadow 那样穿透 Shadow DOM,我们如何重
shadow-dom 中的document 变量的值是多少?在 this jsfiddle 我们可以看到它在父文档中搜索 app 节点并提醒它的值。这是否意味着 shadow-dom 没有单独的文档变
以下代码是来自 chrome 开发工具的 View #shadow-root (user-agent) This I want to restyle 如果我想在 shadow
运行mvn package:shade shade时,日志中的条目显示:用 XYZ-shaded.jar 替换 XYZ.jar但在我的目标目录中,我找不到阴影 jar 这是我关于 Maven 阴影的
我正在尝试编写一个 mixin,它应该将 CSS box-shadow 作为参数并将其转换为 filter: drop-shadow()。 // mixin drop-shadow($shadows)
我正在使用 gradle shadow 插件构建我的 uber jar。 build.grade 文件看起来像: buildscript { repositories { jc
我正在尝试向子对象所在的父对象添加阴影 元素位于其中。我希望插入的阴影与图像重叠。 我的 HTML 代码是: 和 CSS: .highlights { height: 360px
我想在 UIView 上添加drop shadow 和stroke shadow这是我的设计师给我的阴影, 对于投影,他告诉我使用 RGB(176,199,226),不透明度为 90%,距离为 3,大
我希望在单击图像时出现投影。我目前不使用 Jquery,所以如果可能的话,请提供一个 java 脚本解决方案。这是我的 fiddle :http://jsfiddle.net/zUNhD/7/ 我还希
从那以后我一直在使用 CSS box-shadows,但现在我有一个带有圆 Angular 的图像并想给它一个圆 Angular 阴影。所以我尝试使用 filter: drop-shadow,但不幸的
LWC 合成影子 dom 似乎不像 native 影子 dom 实现那样处理插槽,例如 假设您从一个元素开始: Hi there 然后附加影子dom并添加一个插槽,h1将被插入: 现在,如果您在运行“
我试图在以下文档中观察文档级别的自定义输入元素的文本输入元素的输入值的变化: 其中自定义 Div 和自定义输入定义如下: Units 如状态h
我的网站上安装了一个 Angular 网络组件。它使用 Shadow DOM,因此它非常快(在我的情况下必须如此)。 在我的站点上,我还有一个快捷方式 h,它会打开一个显示一些有用信息的弹出窗口。 h
我正在尝试为一个带有与其文本颜色相同的阴影的框创建样式。因为我有几个框,每个框都有不同的文本颜色,所以我想避免在每个框的每个单独规则集中重复相同的颜色。 现在,背景和边框模块状态为 box-shado
我想使用不支持 Shadow-DOM 的浏览器(如 Firefox、PhantomJS 以及其他使用 WebDriver 的浏览器)测试 Polymer 应用程序。 当我使用类似的东西时,Firefo
我有一个 Assets 代表一个按钮,下面有一个阴影。我只想让蓝色部分可点击。有没有简单的方法来做到这一点? 谢谢。 最佳答案 您可以像这样以编程方式添加阴影: button.layer.shadow
我正在尝试创建一个 Photoshop 内阴影效果,与 css3 框阴影插入效果相同。 第 1 步(我正在生成按钮 - 圆 Angular 矩形): convert -size 220x50 xc:n
我需要在 boxMesh 上转换阴影,而网格本身应该不可见。 我找到了 technique Three.js GitHub 问题跟踪器似乎在几年前就可以工作,但现在不再工作了 - 它涉及创建一个新的着
我是一名优秀的程序员,十分优秀!