gpt4 book ai didi

javascript - 防止注入(inject)的标签受到父 CSS 的影响

转载 作者:可可西里 更新时间:2023-11-01 13:24:15 29 4
gpt4 key购买 nike

我想像这样动态地将一些 HTML 注入(inject)到另一个 HTML 页面:

<div id="jwplayer-player"> ... </div>

在父 HTML 页面中,有通用的 DIV CSS 规则(这是示例,可能根据页面不同):

div {
margin-top: 15px;
line-height: 200%;
white-space: normal;
}

如何避免注入(inject)的 DIV 受到它们的影响。

播放器注入(inject)如下:

<div id ="vid-player-container" class="player-container"></div> 
<script type="text/javascript">
document.write('<script type="text/javascript" src="some.site.com/jwplayer/jwplayer.js" ></script>');
document.write('<script type="text/javascript" src="some.script.com/player_style1.js"></script>');
</script>

如果我在那些父页面之外单独尝试,效果很好。所以关键是隔离注入(inject)的代码不受父站点的影响,注意 iFrame 不是我的选择。

最佳答案

我认为您可以使用 ShadowDOM 来实现您想要做的事情。 https://developer.mozilla.org/en-US/docs/Web/Web_Components/Shadow_DOM

它旨在让您以这种方式分离您的组件,并为封装的 DOM 提供 CSS 和 JavaScript 的隔离。

var shadow = document.querySelector('#container').attachShadow({mode: 'open'});
shadow.innerHTML += '<p>I am text in the injected code</p>'

例如:https://jsfiddle.net/rn46rfgx/

如果您检查页面上的元素,您应该能够看到隔离:

enter image description here

免责声明:虽然这可能对您有用,但我不确定这是正确的方法还是有点“hack” - 我希望其他人能用他们对此的想法来评论这个答案!

此外,我不确定浏览器支持是否适合您,您可以在这里查看:http://caniuse.com/#feat=shadowdom

关于javascript - 防止注入(inject)的标签受到父 CSS 的影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41602495/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com