MutationObserver
用法
function callback(mutations, observer){
mutations.forEach(function(mutation) {
console.log(mutation);
});
}
var observer = new MutationObserver(callback);
var el = document.querySelector('article');
var options = {
'childList': true,
'attributes':true
} ;
observer.observe(el, options);
observer.disconnect();
observer.takeRecords()
IntersectionObserver
用法
function callback(entries, observer){
}
options ={
threshold: [0, 0.25, 0.5, 0.75, 1],
root: document.querySelector('.container'),
rootMargin: '0px 0px -200px 0px'
}
const el = document.getElementById('example')
var observer = new IntersectionObserver(callback, options);
observer.observe(el);
observer.observe(el);
observer.unobserve(el);
observer.disconnect();
ResizeObserver
用法
function callback(entries){
for (const entry of entries) {
}
}
const observer = new ResizeObserver(callback)
const el = document.querySelector("h1");
const options = {
box: content-box(默认)|border-box
}
observer.observe(el,options)
observer.unobserve(el)
observer.disconnect()
PerformanceObserver
用法
function callback(entries,observer){
entries.getEntries().forEach(item=>{
console.log(item)
})
}
const observer = new PerformanceObserver(callback);
const options = {
entryTypes: ["mark", "frame/navigation","resource","measure","paint"]
}
observer.observe(options);
observer.disconnect
const PerformanceEntry[] = observer.takeRecords();
ReportingObserver
用法
function callback(reports, observer){
for (const report of reports) {
console.log(report.type, report.url, report.body);
}
}
const options ={
types: ['deprecation'],
buffered: true
}
const observer = new ReportingObserver(callback, options);
observer.observe();
observer.disconnect
const PerformanceEntry[] = observer.takeRecords();