gpt4 book ai didi

css - Safari 扩展的内容 CSS 优先级问题

转载 作者:行者123 更新时间:2023-11-28 00:05:47 26 4
gpt4 key购买 nike

我发现 Safari 如何在 HTML 页面包含的 CSS 和注入(inject)的内容 CSS 之间确定 CSS 的优先级存在问题。我创建了一个 minimal reproducible展示并上传到 GitHub。

问题如下:扩展注入(inject)的 CSS 被来自网站本身的较低层次的 css 规则所否决。在此屏幕截图中,div{} 规则在网站的 CSS 中,div.hello{} 规则在 Safari 扩展的内容 CSS 中声明并由 Safari 注入(inject)。

结果:HTML 中的 div 是红色的,而不是蓝色的。屏幕截图显示 Safari 使用的 div{} 优先级高于 div.hello{}。请注意,initial 规则由 Safari 自动添加。内容 CSS 不包含此类声明。

enter image description here

请参阅此处的最小示例,或我为最小可重现示例创建的 GitHub 存储库:https://github.com/MikeSpock/safari-extension-css-bug

如何为我通过 Safari 扩展程序添加到网站的标记创建稳定的 CSS,看到网站中的每个 CSS 都否决扩展程序中的 CSS?例如,这不是 Chrome 扩展程序的工作方式,它的工作方式如您所料,正确处理 CSS 优先级。


最小可行示例:

showcase.safari.html

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<base href="./">
<link rel="stylesheet" href="./showcase.safari.css">
</head>
<body>
<div>
This should have a red background.
</div>
<div class="hello">
This should have a green background.
</div>
</body>
</html>

showcase.safari.css

div{
background:red;
}

showcase.safariextension/content.css

这是通过 Safari 扩展注入(inject)的 css

div.hello {
background:green;
}

showcase.safariextension/Info.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Builder Version</key>
<string>13607.1.40.1.5</string>
<key>CFBundleDisplayName</key>
<string>safari-extension-css-bug</string>
<key>CFBundleIdentifier</key>
<string>com.yourcompany.safari-extension-css-bug</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>Content</key>
<dict>
<key>Stylesheets</key>
<array>
<string>content.css</string>
</array>
</dict>
<key>ExtensionInfoDictionaryVersion</key>
<string>1.0</string>
<key>Permissions</key>
<dict>
<key>Website Access</key>
<dict>
<key>Include Secure Pages</key>
<true/>
<key>Level</key>
<string>All</string>
</dict>
</dict>
</dict>
</plist>

通过 Safari Extension Builder 添加 showcase.safariextension 文件夹作为 Safari Extension,并打开 showcase.safari.html 作为最小示例。

最佳答案

我找到了一个对我来说足够好的解决方法,并且在开发扩展时可能是一个很好的通用实践。

更改您在内容脚本中生成的所有 html 标签,例如

  • 分区
  • 一个

和其他人自定义标签,这样它就不会与网站自己的样式定义冲突:

  • 广告
  • 一个

然后您可以确保从头开始您的样式并且不会覆盖任何内容。

关于css - Safari 扩展的内容 CSS 优先级问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55710055/

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