我正在做一个翻译单词的浏览器扩展,需要在任意网站上注入一个翻译窗口,要防止当前网站的 CSS 影响翻译窗口的外观,所以提出这个问题。
还有两个方案,都不理想
1 插入一个 iframe,不会受到当前网站 CSS 的影响
2 插入 一个自定义元素 <foo></foo>
1
fe619742721 2018 年 5 月 29 日 important 不行么
|
2
xiaody 2018 年 5 月 29 日 iframe 和自定义元素哪里不理想?
CSS 方案可以试试 https://www.w3.org/TR/css-cascade-3/#all-shorthand |
3
yushiro 2018 年 5 月 29 日 via iPhone
内联样式的优先级最高,自己先覆盖一遍呗
|
4
cccer 2018 年 5 月 29 日 |
5
wwjvtwoex OP |
6
banricho 2018 年 5 月 29 日
把元素插到 </html> 后面,虽然不符合规范,但是浏览器基本都能识别 |
9
doubleflower 2018 年 5 月 29 日 以前扫了一遍 web components 相关时记得好象有这么个技术,好象叫 Shadow DOM,chrome 原生支持的
|
10
leega0 2018 年 5 月 29 日 楼上给了你答案
|
12
milklee 2018 年 5 月 29 日 之前我也为这个问题纠结了很久,还为此写过一篇文章 https://github.com/lmk123/blog/issues/32
我尝试过挨个重置 css 样式、Shadow DOM、全自定义元素、iframe 这四种方式,最后还是觉得 all 最好。 |
14
banricho 2018 年 5 月 29 日
|
19
wwjvtwoex OP 我没仔细考虑,对注入的元素,“阻止冒泡” 确实可以解决。
|
20
mg122 2018 年 5 月 29 日 z-index 层和透明度
|
21
chenyu8674 2018 年 5 月 29 日 用 canvas 画一个 [doge]
|
22
gxm44 2018 年 5 月 29 日 shadow dom
|
23
codehz 2018 年 5 月 29 日
把源站放 iframe 里(
|