检测元素.Javascript会改变样式
Detect Element.Style changes with Javascript
我现在正在做一个小小的扩展来增强一个网站,即google +邮箱。我想把它移到显示器的最左边。
这个邮箱在每次打开时都会重置它的值。
基本上,我想要消除这种行为,并且认为我可以逐个元素地监视元素。样式更改,并再次覆盖它们。然而,DOMAttrModified似乎不适用于这样的东西
除此之外,我还发现当邮箱关闭时,它就不存在了oO?
也许有人有办法解决这个问题当然,我可以循环一个操作,每秒设置一次样式。但是没有,谢谢XD
非常感谢你的帮助
不支持突变事件,webkit浏览器不支持DOMAttrModified。使用突变观察者代替。或者,您可以尝试以下方法:
让您快速开始使用突变观察者
这是一个小的可重用函数
/**
* Mutation Observer Helper function
* //developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe
* @param {string} sel The DOM selector to watch
* @param {object} opt MutationObserver options
* @param {function} cb Pass Mutation object to a callback function
*/
const Observe = (sel, opt, cb) => {
const Obs = new MutationObserver((m) => [...m].forEach(cb));
document.querySelectorAll(sel).forEach(el => Obs.observe(el, opt));
};
要在某些class="item"
元素上只跟踪属性"style"
的变化,使用:
Observe(".item", {
attributesList: ["style"], // Only the "style" attribute
attributeOldValue: true, // Report also the oldValue
}, (m) => {
console.log(m); // Mutation object
});
查看所有属性的变化,而不是使用attributesList
数组:
attributes: true
如果需要,这里有一个例子:
/**
* Mutation Observer Helper function
* //developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe
* @param {string} sel The DOM selector to watch
* @param {object} opt MutationObserver options
* @param {function} cb Pass Mutation object to a callback function
*/
const Observe = (sel, opt, cb) => {
const Obs = new MutationObserver((m) => [...m].forEach(cb));
document.querySelectorAll(sel).forEach(el => Obs.observe(el, opt));
};
// DEMO TIME:
Observe("#test", {
attributesList: ["style"],
attributeOldValue: true,
}, (m) => {
console.log(`
Old value: ${m.oldValue}
New value: ${m.target.getAttribute(m.attributeName)}
`);
});
const EL_test = document.querySelector("#test");
EL_test.addEventListener("input", () => EL_test.style.cssText = EL_test.value);
EL_test.style.cssText = EL_test.value;
* {margin:0;}
textarea {width: 60%;height: 50px;}
<textarea id="test">
background: #0bf;
color: #000;
</textarea>
相关文章:
- 为什么当我分配给element.style时,我的元素的样式没有改变
- 钛:平台检测并相应地改变界面样式
- CSS:根据屏幕宽度改变样式
- Onload Javascript不会改变DIV样式
- 检测元素.Javascript会改变样式
- windows 8应用程序CSS列表视图改变内联样式
- 用javascript改变css样式
- Javascript用if语句改变样式表
- CSS改变样式/动画样式使用类或javascript
- jQuery -改变样式和显示某些元素
- 当向下滚动时改变样式(javascript)
- 简单的Javascript改变样式是行不通的
- 为什么不't Chrome允许通过JS改变样式标签
- 根据设备宽度改变样式
- 防止javascript函数改变样式属性
- 用Javascript改变样式
- 为什么通过JavaScript改变样式会受到CSS转换的影响
- 在IFrame中改变样式
- 改变样式表javascript
- 不改变样式的asp.net验证器