JavaScript Prototype - 覆盖某些元素的.scrollTo

时间:2013-10-23 16:26:10

标签: javascript prototypejs

我希望有效地拦截对.scrollTo的任何调用,并检查该元素是否是某个元素,以便我可以阻止浏览器滚动到该元素。运行.scrollTo的JavaScript文件不受我的控制,因此需要拦截它。

这是我到目前为止的代码:

var oScrollTo = scrollTo;
HTMLElement.prototype.scrollTo = function(){
    var scrollId = this.id;
    if ( scrollId !== 'id-of-element') {
        console.log("yes");
        $(scrollId).oScrollTo();
    } else {
        console.log("no");
    }
};

这基本上是这个答案的组合:https://stackoverflow.com/a/1740510和这个答案:https://stackoverflow.com/a/19209665

目前,它拦截.scrollTo调用并记录“是”如果它不是匹配元素而且是“否”。

但是,当记录“是”但它没有记录时,它应该以正常方式运行.scrollTo。关于如何实现这一目标的任何想法将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

您的代码大部分是正确的,但您没有将orgScrollTo附加到适当的位置以执行您正在尝试的操作。尝试以下几点:

HTMLElement.prototype.orgScrollTo = HTMLElement.prototype.scrollTo;
HTMLElement.prototype.scrollTo = function(){
    var scrollId = this.id;
    if ( scrollId !== 'id-of-element') {
        console.log("yes");
        this.orgScrollTo();
    } else {
        console.log("no");
    }
};