我正在尝试检测元素中的CSS属性更改。我在网上搜索,找到了MutationObserver javascript API。但是在我的测试脚本中,它并没有像预期的那样工作(它没有提醒属性名和属性值)。
var foo = document.getElementById("hideit");
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
alert('mutation.type = ' + mutation.type);
});
});
observer.observe(foo);
observer.disconnect();
$(function() {
$("#clickhere").on("click", function() {
$("#hideit").slideToggle('fase');
});
});<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<body>
<div id="clickhere">click to toggel</div>
<div id="hideit" style="display:none;">this is the content of the hide/show toggle</div>
</body>
并显示一个javascript错误。
TypeError: Argument 1 of MutationObserver.observe is not an object.感谢就是进步
发布于 2016-03-23 16:32:09
你的代码中有两个问题:
observer.observe的
observe之后立即调用observer.disconnect();。Disconnect停止观察。Working example
发布于 2016-03-23 16:32:21
在实际加载DOM之前执行您的代码...因此,您将向observe方法传递一个null/未定义的值。
把你的代码放在里面:
$( document ).ready(function() {
....
})另外,调用disconnect将阻止它接收任何事件。因此,您不应该在调用observe之后立即调用disconnect。并且您缺少observe调用的一个参数。
请查看此处的工作示例:
https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver#Example_usage
https://stackoverflow.com/questions/36172983
复制相似问题