Pat*_*ick 6 javascript angularjs
我一直在为Angularjs开发一个scrollspy模块.我遇到的问题是,如果页面处理动态内容,则滚动数据(元素位置)很快就会过时.处理这类问题的angularjs方法是什么?
任何执行DOM操作$broadcast的指令是否应该是scrolllspy模块寻找的事件 - 允许它重构其位置数据?
如果scrollspy模块每隔x秒检查一次scrollHeight的变化$timeout吗?
甚至更好,有没有绑定,并观察DOM属性值变化的方式(属性,如offsetTop,offsetHeight,scrollHeight,没有数据属性)?
变异观察者似乎是所需的设施,遗憾的是它们仅受最新浏览器的支持.
var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
if( MutationObserver ) {
for ( var i = 0; i < spyService.spies.length; i++ ) {
var spy = spyService.spies[i].scope.spy;
var target = document.getElementById(spy);
var config = {
attributes: true,
childList: true,
characterData: true,
subtree: true
};
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.warn('mutation observation');
});
}).observe(target, config);
}
}
else {
console.warn('no mutation observers here');
$interval(function() {
angular.element( document ).ready( function() {
console.log('refreshing');
});
}, 2000);
}
Run Code Online (Sandbox Code Playgroud)
目前正在寻找实际可行的polyfill.
编辑:如果不支持Mutation Observers,则添加轮询作为后备.
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |