小编Dan*_*tiz的帖子

如何确定滚动方向而不实际滚动

我正在编写一个用户第一次滚动的页面,它实际上并没有向下滚动页面,而是添加了一个带有转换的类.我想检测用户何时向下滚动,因为如果他向上滚动,我希望它能做其他事情.我发现的所有方法都是基于定义当前正文ScrollTop,然后在页面滚动后与body scrollTop进行比较,定义方向,但由于页面实际上没有滚动,所以body scrollTop()不会改变.

animationIsDone = false;

function preventScroll(e) {

    e.preventDefault();
    e.stopPropagation();
}

$('body').on('mousewheel', function(e) {

    if (animationIsDone === false) {
        $("#main-header").removeClass("yellow-overlay").addClass("yellow-overlay-darker");
        $(".site-info").first().addClass("is-description-visible");
        preventScroll(e);

        setTimeout(function() {
            animationIsDone = true;
        }, 1000);

    }


});
Run Code Online (Sandbox Code Playgroud)

这就是我所拥有的,但是这样,我滚动它的方向并不重要,触发事件

javascript jquery scroll

31
推荐指数
2
解决办法
4万
查看次数

通过带有角度js的URL传递变量

我正在使用角度来制作电子商务,而我正在设置无限滚动到产品列表页面.一切正常,但我想使用URL来设置页面,因此用户可以通过URL访问特定页面.如何在URL中设置像"pageNumber"这样的变量?比如"www.page.com/page/2/"(我想得到2号并将其传递给商店控制员)

这是我现在的代码

(function() {
var app = angular.module('concurseirosUnidos', ['store-directives', 'ngRoute']);
    app.config(function($routeProvider, $locationProvider){
    $locationProvider.html5Mode(true);
    $routeProvider
    .when('/', {templateUrl: 'partials/products-list.html'})
    .when("/page/$pageNumber"), {
        // probably I'd need to put something here?
    })
     .otherwise({redirectTo:'/'});;
    }
});

  app.controller('StoreController', ['$http', '$scope', function($http, $scope){
    var store = this;
    store.products = [];      

    $http.get('/app/products/products.json').success(function(data){
        store.products = data;
    });

    if(typeof page === 'undefined'){
        var page = 1;   
    }else{
      //if it's defined through the url, page = pageNumberFromURL
    }
    $scope.myLimit = 3 * page;

    $scope.nextPage = function () {
        page++; // I …
Run Code Online (Sandbox Code Playgroud)

infinite infinite-loop infinite-scroll angularjs

8
推荐指数
1
解决办法
2万
查看次数

克隆音频源而无需再次下载

我正在使用javascript在浏览器中创建钢琴.为了让我同时多次播放相同的键,而不是只播放Audio对象,我克隆它并播放克隆,否则我必须等待音频完成或重新启动它,我不知道我想要.

我做过这样的事情:

var audioSrc = new Audio('path/');
window.onkeypress = function(event) {
    var currentAudioSrc = audioSrc.cloneNode();
    currentAudioSrc.play();
}
Run Code Online (Sandbox Code Playgroud)

问题是,我正在检查chrome的检查器,我注意到每次克隆对象时,浏览器都会再次下载它

在此输入图像描述

我检查了一些想要实现类似功能的人,并注意到他们中的大多数都遇到了同样的问题,他们重新下载了文件.我发现可以同时多次播放相同音频源的唯一示例是SoundJs http://www.createjs.com/SoundJS

我尝试检查源可能但无法弄清楚它是如何完成的.任何的想法?


javascript audio html5

5
推荐指数
1
解决办法
721
查看次数

为什么 .sort() 在按字母顺序对某些数组进行排序时表现不正确?

我遇到了一个奇怪的 JavaScript 行为。如果我尝试使用 进行排序 ['a', 'b','c', 'd', 'e', 'f', 'g', 'h','i', 'j'][].sort((a, b) => a > b)它会返回正确排序的数组(在本例中,与之前完全相同),但如果我向数组中添加一项,例如:

['a', 'b','c', 'd', 'e', 'f', 'g', 'h','i', 'j', 'k'].sort(
  (a, b) => a > b
)
Run Code Online (Sandbox Code Playgroud)

它返回:

["f", "a", "b", "c", "d", "e", "g", "h", "i", "j", "k"]

奇怪的是,如果我将“l”添加到数组中,它会返回:

["g", "a", "b", "c", "d", "e", "f", "h", "i", "j", "k", "l"] (“f”现在位于正确的位置,但“g”不是 oO)

如果我.sort在不提供比较器的情况下使用该方法,它会正确排序,但这对我来说没有用,因为我实际上是在尝试按属性对对象数组进行排序,例如:

[{ firstName: 'Peter' }, { firstName: 'Alfred' }]

有谁知道为什么会发生这种情况?

javascript arrays sorting

0
推荐指数
1
解决办法
383
查看次数