是否可以使用 Javascript 检查样式标签内是否定义了某些 CSS 属性?

2023-12-04

我正在编写一个脚本,需要检查某些 CSS 属性是否在<style> tag.

<style type="text/css">
#bar {width: 200px;}
</style>
<div id="foo" style="width: 200px;">foo</div>
<div id="bar">bar</div>
// 200px
console.log(document.getElementById("foo").style.width);

// an empty string
console.log(document.getElementById("bar").style.width);

if(property_width_defined_in_style_tag) {
    // ...
}

这可能吗?

我并不是想得到getComputedStyle(ele).width btw.


我不确定这是否是您想要的,它最接近您拥有元素实例的第一个伪代码,无论如何希望它有所帮助:

var proto = Element.prototype;
var slice = Function.call.bind(Array.prototype.slice);
var matches = Function.call.bind(proto.matchesSelector || 
                proto.mozMatchesSelector || proto.webkitMatchesSelector ||
                proto.msMatchesSelector || proto.oMatchesSelector);

// Returns true if a DOM Element matches a cssRule
var elementMatchCSSRule = function(element, cssRule) {
  return matches(element, cssRule.selectorText);
};

// Returns true if a property is defined in a cssRule
var propertyInCSSRule = function(prop, cssRule) {
  return prop in cssRule.style && cssRule.style[prop] !== "";
};

// Here we get the cssRules across all the stylesheets in one array
var cssRules = slice(document.styleSheets).reduce(function(rules, styleSheet) {
  return rules.concat(slice(styleSheet.cssRules));
}, []);

// get a reference to an element, then...
var bar = document.getElementById("bar");

// get only the css rules that matches that element
var elementRules = cssRules.filter(elementMatchCSSRule.bind(null, bar));

// check if the property "width" is in one of those rules
hasWidth = elementRules.some(propertyInCSSRule.bind(null, "width"));

我认为你可以为了你的目的重用所有这些代码,或者只是其中的一部分,它是有意模块化的——例如,一旦你拥有了所有的cssRules压平,或者elementRules,您仍然可以使用for循环并检查您需要什么。 它使用 ES5 函数和匹配选择器所以在旧浏览器中如果没有垫片就无法工作。另外,您还可以按优先级等进行过滤 - 例如,您可以删除所有优先级低于内联样式属性的属性等。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以使用 Javascript 检查样式标签内是否定义了某些 CSS 属性? 的相关文章

随机推荐

  • 使用 ggplot2 绘制不同长度的向量

    我有 8 个不同长度的数据向量 MAP 分数 评级的文档数量不同 从 80 到 500 如何将它们读入 R 并在 ggplot2 中将它们绘制为相同的长度 将它们视为从 0 到 1 范围内的不同数量的数据点 它们应该按比例缩小 放大 以便它
  • OCaml 中函数以相反顺序返回列表

    我想从文件中读取一些数字 将它们放入列表中 最后将它们显示在屏幕上 Numbers txt 目前有2 3 5 7 11但是作为输出我得到11 7 5 3 2 unit 为什么会发生这种情况 let rec int list from sb
  • Google App Engine 上的并发请求处理

    我正在几个平台上尝试并发请求处理 该实验的目的是有一个broad衡量某些选定技术的能力界限 我在我的机器上设置了一个 Linux 虚拟机 其中包含一个基本的 Go http 服务器 vanillahttp HandleFunc of the
  • 如何在Linux下不使用QProcess执行shell命令?

    我正在尝试从 Qt 应用程序中读取屏幕分辨率 但不使用 GUI 模块 所以我尝试使用 xrandr grep awk print 1 命令通过QProcess 但它显示警告并且不给出任何输出 unknown escape sequence
  • suds.TypeNotFound:未找到类型:“MerchantCode”

    我正在使用 django 开发一个网络 它处理 wsdl 我有一个处理它的示例代码 但它是用 PHP 编写的 我想将它转换为 python 以用于我的 django 这是 PHP 文件
  • Android 使新的异步任务在后台或 Dropbox Core API 问题中优先于其他任务

    我正在使用 Android 中的核心 API 从 Dropbox 加载多张照片 并在发出请求时对它们进行序列化 我正在将缩略图显示在网格视图中 当用户单击其中一个缩略图时 它会转到另一个活动 它会从服务器获取完整的分辨率版本 它做得很好 但
  • 如何在 Foundry 中解析大型压缩 csv 文件?

    我有一个大型 gzip 压缩 csv 文件 csv gz 上传到一个数据集 该数据集大小约为 14GB 未压缩时为 40GB 有没有一种方法可以使用 Python Transforms 解压缩 读取并将其写入数据集 而不会导致执行器 OOM
  • Pandas:使用 groupby 和函数进行数据帧过滤

    使用Python 3 3和Pandas 0 10 我有一个通过连接多个 CSV 文件构建的 DataFrame 首先 我过滤掉 名称 列中包含特定字符串的所有值 结果看起来像这样 为了简洁起见缩短了 实际上还有更多列 Name ID A 1
  • 批处理菜单轮廓和设计[重复]

    这个问题在这里已经有答案了 不久前 我在谷歌上搜索如何制作具有更 专业外观 的批处理菜单 而不是使用以下符号 批量制作菜单周围的轮廓 但我没有运气 今天无意间发现了这篇文章 https web archive org web 2015120
  • 尝试设置 Spring Servlet 时出现“WARN org.springframework.web.servlet.PageNotFound - 未找到带有 URI 的 HTTP 请求的映射...”

    我正在尝试设置一个 Spring MVC 项目 我添加了一个调度程序 servlet 一个 jsp 并设置了 web xml 文件 但我不断得到 警告 org springframework web servlet PageNotFound
  • 使用 2 级嵌套数组将数据帧转换为 JSON

    我对 Python 编程有点陌生 我有一个小要求 我需要以 JSON 格式列出给定两周内的所有客户及其金额 目前 我有一个这样的数据框 FortNight Amount Customer Parameter Apr 2FN 2018 339
  • 微软Power BI连接mysql

    我的mysql服务器在云端 我安装连接器来连接mysqlWindow 7机器 然后我尝试从 Power BI 连接到 MySQL 服务器 我提供了 IP 地址和数据库名称以及我的 root 凭据 然后我点击保存 它给了我以下错误 DataS
  • Shinydashboard - 根据所选选项卡更改背景

    我正在使用 Shinydashboard 包创建一个仪表板 我需要根据所选选项卡更改背景颜色 我已经尝试过以下代码 但它没有按预期工作 library shiny library shinydashboard library dplyr u
  • G1GC 备注阶段花费的时间太长

    我的服务器应用程序在负载下有时会无响应 我发现问题与很长的 GC Remark 有关 没有实施垃圾收集调整 我的测试服务器是 4 核 8 GB 8 GB 交换服务器 这是 gc 日志输出的日志 2014 04 06T04 39 58 426
  • Inno Setup 卸载程序版本信息

    我使用 Inno Setup 作为我的安装程序 我里面的 VersionInfo 有问题unins000 exe 为了在安装程序中填充 VersionInfo 我使用了指令AppPublisher AppCopyright等等 但它不影响安
  • 泛型类,如何在运行时设置类型?

    我创建了一个泛型类 但我知道运行时的类型 而不是设计中的类型 所以我想知道如何在运行时设置类型 例如 我有 public class MyGenericClass
  • 如何在 django 中的自定义 url 处提供静态文件目录

    我正在开发一个 Django 应用程序 该应用程序提供静态文件http 主机 静态 我有一个充满静态 html js css 的新文件夹 需要通过以下位置访问 http 主机 工作人员 我如何告诉 django 从该 url 提供 staf
  • IF 的奇怪结果

    灵感来自这个问题它的答案 我做了一些测试 一个答案表明 数字太大 超出 32 位整数 并且它们会被截断 但这并不能解释结果 显然它不会将双方作为字符串进行比较 正如我所期望的那样 看起来if感到困惑并认为 好吧 我不知道 给它一个真实的 使
  • Rails 5 Ask_as_taggable 与 select2

    I cannot see the effect of select2 in rails 5 form whether it s a text field or select does anyone know why the tag list
  • 是否可以使用 Javascript 检查样式标签内是否定义了某些 CSS 属性?

    我正在编写一个脚本 需要检查某些 CSS 属性是否在