@document

已弃用:此特性不再推荐。虽然某些浏览器可能仍然支持它,但它可能已经从相关的网络标准中删除,可能正在删除过程中,或者可能仅为兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅本页底部的兼容性表格以指导您的决策。请注意,此特性可能随时停止工作。

非标准:此特性未标准化。我们不建议在生产环境中使用非标准特性,因为它们浏览器支持有限,并且可能会更改或被移除。但是,在没有标准选项的特定情况下,它们可以是合适的替代方案。

@document CSS @规则根据文档的 URL 限制其中包含的样式规则。它主要用于用户定义的样式表(有关更多信息,请参阅 userchrome.org),但也可以用于作者定义的样式表。

语法

css
@document url("https://www.example.com/")
{
  h1 {
    color: green;
  }
}

@document 规则可以指定一个或多个匹配函数。如果任何函数适用于给定的 URL,则该规则将对该 URL 生效。可用的函数有:

url()

匹配确切的 URL。

url-prefix()

如果文档 URL 以提供的值开头则匹配。

domain()

如果文档 URL 位于提供的域(或其子域)上则匹配。

media-document()

根据参数中的字符串匹配媒体,字符串可以是 videoimagepluginall 中的一个。

regexp()

如果文档 URL 与提供的正则表达式匹配则匹配。表达式必须匹配整个 URL。

提供给 url()url-prefix()domain()media-document() 函数的值可以可选地用单引号或双引号括起来。提供给 regexp() 函数的值必须用引号括起来。

提供给 regexp() 函数的转义值还必须从 CSS 中转义。例如,.(句点)在正则表达式中匹配任何字符。要匹配文字句点,您首先需要使用正则表达式规则对其进行转义(为 \.),然后使用 CSS 规则对该字符串进行转义(为 \\.)。

@document 目前仅在 Firefox 中受支持;如果您想在自己的非 Firefox 浏览器中复制此类功能,可以尝试使用 @An-Error94 的此 polyfill,它结合使用了用户脚本、data-* 属性属性选择器

注意:此属性有一个 -moz- 前缀版本——@-moz-document。在 Firefox 59 的 Nightly 和 Beta 版本中,此功能已仅限于用户和 UA 样式表中使用——这是一个旨在缓解潜在 CSS 注入攻击的实验(参见Firefox bug 1035091)。

正式语法

@document [ <url>                    |
            url-prefix(<string>)     |
            domain(<string>)         |
            media-document(<string>) |
            regexp(<string>)
          ]# {
  <group-rule-body>
}

示例

为 CSS 规则指定文档

css
@document url("http://www.w3.org/"),
          url-prefix("http://www.w3.org/Style/"),
          domain("mozilla.org"),
          media-document("video"),
          regexp("https:.*") {
  /* CSS rules here apply to:
     - The page "http://www.w3.org/"
     - Any page whose URL begins with "http://www.w3.org/Style/"
     - Any page whose URL's host is "mozilla.org"
       or ends with ".mozilla.org"
     - Any standalone video
     - Any page whose URL starts with "https:" */

  /* Make the above-mentioned pages really ugly */
  body {
    color: purple;
    background: yellow;
  }
}

规范

最初在 Level 3 中,@document推迟到 Level 4,但随后被移除。

浏览器兼容性

另见