喜马拉雅
火狐狸
火狐狸
  • UID55837
  • 注册日期2017-07-22
  • 最后登录2024-01-21
  • 发帖数99
  • 经验112枚
  • 威望0点
  • 贡献值90点
  • 好评度6点
  • 社区居民
  • 忠实会员
阅读:2810回复:4

已解决 [stylish/stylus/xStyle] 有办法让css样式,*不*对iframe里的节点生效吗?

楼主#
更多 发布于:2019-01-14 04:21
小白不知道怎么用技术语言描述


举栗子,比如有个html::before的规则,想只对顶层document的html有效,对iframe里的html节点不生效
——怎么做到呢?


写脚本可以做,但启用禁用就必须刷新才能生效,所以还是想尽量用样式来做。google了半天,没找到啥有用方案:
https://stackoverflow.com/questions/16428067/apply-css-to-html-but-not-iframe-html
taoww
非常火狐
非常火狐
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2024-10-23
  • 发帖数650
  • 经验595枚
  • 威望0点
  • 贡献值110点
  • 好评度109点
1楼#
发布于:2019-01-17 12:47
单纯的css没法判定。如果iframe有src属性,倒是可以直接在扩展的css应用范围里设置。否则只能利用iframe中内容结构的差异点来处理
stylus会给iframe的html节点加上个stylus-iframe属性,可以根据这点来写规则
html:not([stylus-iframe]) body {
    background: red;
}
喜马拉雅
火狐狸
火狐狸
  • UID55837
  • 注册日期2017-07-22
  • 最后登录2024-01-21
  • 发帖数99
  • 经验112枚
  • 威望0点
  • 贡献值90点
  • 好评度6点
  • 社区居民
  • 忠实会员
2楼#
发布于:2019-01-18 06:27
taoww:单纯的css没法判定。如果iframe有src属性,倒是可以直接在扩展的css应用范围里设置。否则只能利用iframe中内容结构的差异点来处理
stylus会给iframe的html节点加上个stylus-iframe属性,可以根据这点来...
回到原帖
谢谢,请问stylus加这个属性,有什么其它触发条件么?


我测试了很多页面,例如以这个页面为例子:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/iframe
iframe下的html并没有添加这个属性(stylus用的最新版本):

图片:5c40fec5a3065[1].png

taoww
非常火狐
非常火狐
  • UID39284
  • 注册日期2013-03-18
  • 最后登录2024-10-23
  • 发帖数650
  • 经验595枚
  • 威望0点
  • 贡献值110点
  • 好评度109点
3楼#
发布于:2019-01-18 11:06
喜马拉雅:谢谢,请问stylus加这个属性,有什么其它触发条件么?


我测试了很多页面,例如以这个页面为例子:https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/iframe

ifra...
回到原帖


stylus的设置里有一个选项

图片:Snipaste_2019-01-18_11-07-55.png



除此之外目前看来还有两个条件。一是要有可以应用到上层页面的样式规则,二是iframe没有src属性(比如本论坛发表回复的高级模式的编辑框)。这两者都满足了才会加上stylus-iframe属性。对有src属性的,可以直接通过设置扩展中的样式应用范围来限制,一般也不需要用到这个属性
下面就是为firefox.net.cn应用了上面那段css代码后的效果

图片:Snipaste_2019-01-18_10-54-37.png

喜马拉雅
火狐狸
火狐狸
  • UID55837
  • 注册日期2017-07-22
  • 最后登录2024-01-21
  • 发帖数99
  • 经验112枚
  • 威望0点
  • 贡献值90点
  • 好评度6点
  • 社区居民
  • 忠实会员
4楼#
发布于:2019-01-18 17:16
哇,谢谢,原来旮旯角落里还有这个选项,用了stylus这么久都不知道……试验一下成功了,太感谢太感谢了
有src属性就用属性选择符过滤好啦,问题不大哈哈
游客

返回顶部