Javascript:如何检查样式是否已注入
Javascript: How to check if a style is already injected
在Chrome插件中,通过后台脚本,我以这种方式注入样式:
if(!styleLeft){
var styleLeft = document.createElement("style");
document.head.appendChild(styleLeft);
styleLeft.innerHTML = "a, .left-hand { cursor: wait; }";
}
但是,当样式标记已在页面中时,if不起作用。如何寻找我的特定风格?
谢谢。
确保在此
检查的全局范围或任何外部范围内声明styleLeft
。否则,您只需在范围结束时将其丢弃,并在每次迭代时创建一个新的空变量。
检查 ID。 示例:
if ( !!document.getElementById( 'a-long-id-that-will-never-collide' ) ) {
var styleLeft = document.createElement("style");
// Set the ID so that you can check for it later
styleLeft.id = 'a-long-id-that-will-never-collide';
document.head.appendChild(styleLeft);
styleLeft.innerHTML = "a, .left-hand { cursor: wait; }";
}
你可以
解析document.styleSheets
(它们应该可以在Chrome插件中访问,但我不是100%确定)。如果您为注入的每个样式指定一个唯一的标题,您将更容易找到已经注入的样式:
var styleLeft = document.createElement("style");
styleLeft.setAttribute("title", "<a unique id>");
document.head.appendChild(styleLeft);
styleLeft.innerHTML = "a, .left-hand { cursor: wait; }";
document.head.appendChild(styleLeft);
现在,document.styleSheets
的最后一个条目具有 .title 属性。你可以用它来查看它是否是你的一个。
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- d3.js圆的半径是否可以由样式属性指定
- 是否可以在网页上用另一种字体设置jqmath-display的样式
- 检测价格是否高于或低于200.00,然后设置(此)表格行的样式
- 是否可以在传单中使用Mapbox研究中制作的样式
- 是否可以在材质ui中只更改样式道具中的一个属性
- 是否可以对three.js自动生成的画布进行样式化/定位
- 应用样式,无论元素是否已使用 jQuery 添加到 DOM 中
- 检测样式表是否无法加载(在 Firefox 上不起作用)
- 对于 css 样式,是否有等效的 eval
- 是否有可能在具有内联样式的样式标签上使用XSS进行攻击
- Javascript:如何检查样式是否已注入
- 是否可以使用带有自定义地图框样式的传单版本 1
- 是否可以从外部样式表中获取 dom 元素的特定 css 属性的值,而不是从计算的样式表中获取
- 检测样式是否为用户样式
- 是否可以在打字稿中使用 nodejs 样式模块
- 无论如何,是否可以强制所有样式“阻止”或“无”而不通过循环
- 是否可以设置跨域 iframe 内容的样式
- 如何使用javascript检查HTML样式属性是否存在
- JavaScript库应该如何设置默认的CSS样式(是否有“不重要”?)