Бесконечная прокрутка в квадрате получить фильтр категорий
Я использую этот код для бесконечной загрузки страницы в квадратном пространстве. Моя проблема в том, что перезагрузка не захватывает фильтрацию, которую я настроил в своем URL. Кажется, он не видит переменные или даже url или categoryFilter в моей коллекции. Я пытался использовать директиву.var, но лениво загруженные элементы не могут видеть объем вещей, определенных до него. У меня заканчиваются идеи, пожалуйста, помогите!
редактировать: с тех пор я нашел ответ, но получил другой вопрос.
Я смог использовать window.location.href вместо window.location.pathname, чтобы в итоге получить параметры таким способом. За исключением того, что это не работает в IE11, так что теперь я должен искать это.
<script>
function infiniteScroll(parent, post) {
// Set some variables. We'll use all these later.
var postIndex = 1,
execute = true,
stuffBottom = Y.one(parent).get('clientHeight') + Y.one(parent).getY(),
urlQuery = window.location.pathname,
postNumber = Static.SQUARESPACE_CONTEXT.collection.itemCount,
presentNumber = Y.all(post).size();
Y.on('scroll', function() {
if (presentNumber >= postNumber && execute === true) {
Y.one(parent).append('<h1>There are no more posts.</h1>')
execute = false;
} else {
// A few more variables.
var spaceHeight = document.documentElement.clientHeight + window.scrollY,
next = false;
/*
This if statement measures if the distance from
the top of the page to the bottom of the content
is less than the scrollY position. If it is,
it's sets next to true.
*/
if (stuffBottom < spaceHeight && execute === true) {
next = true;
}
if (next === true) {
/*
Immediately set execute back to false.
This prevents the scroll listener from
firing too often.
*/
execute = false;
// Increment the post index.
postIndex++;
// Make the Ajax request.
Y.io(urlQuery + '?page=' + postIndex, {
on: {
success: function (x, o) {
try {
d = Y.DOM.create(o.responseText);
} catch (e) {
console.log("JSON Parse failed!");
return;
}
// Append the contents of the next page to this page.
Y.one(parent).append(Y.Selector.query(parent, d, true).innerHTML);
// Reset some variables.
stuffBottom = Y.one(parent).get('clientHeight') + Y.one(parent).getY();
presentNumber = Y.all(post).size();
execute = true;
}
}
});
}
}
});
}
// Call the function on domready.
Y.use('node', function() {
Y.on('domready', function() {
infiniteScroll('#content','.lazy-post');
});
});
</script>
1 ответ
Я смог заставить этот скрипт работать так, как я хотел.
Я думал, что мог бы использовать:
Static.SQUARESPACE_CONTEXT.collection.itemCount
чтобы получить {collection.categoryFilter} как с jsont, вот так:
Static.SQUARESPACE_CONTEXT.collection.categoryFilter
или это:
Static.SQUARESPACE_CONTEXT.categoryFilter
Это не сработало, поэтому я изменил
urlQuery = window.location.pathname
в
urlQuery = window.location.href
который дал мне параметры, которые мне нужны.
Проблема IE11, с которой я столкнулся, была
window.scrollY
Я изменил его на ie11 совместимый
Window.pageYOffset
и нам было хорошо идти!