Ошибка при использовании YUI3: "Y.QueryString.parse не является функцией"

Я создаю страницу Squarespace и хочу иметь исходящую ссылку на странице, параметры запроса которой устанавливаются в соответствии с параметрами запроса на самой странице. Поскольку Squarespace автоматически встраивает YUI3 в каждый сайт, я пытаюсь это использовать (хотя у меня больше опыта работы с jquery).

Пример: страница загружается как http://example.com/page/?email=foo@bar.com, У меня есть ссылка на странице, которая идет к http://another.example.com/page который должен быть изменен, чтобы перейти к http://another.example.com/page?address=foo@bar.com,

Следующий код делает именно то, что мне нужно, когда я вставляю его в консоль браузера:

var MyButton = Y.all('a[href="http://another.example.com/page"]');
var QueryString = Y.QueryString.parse(window.location.search.substring(1));
MyButton.setAttribute('href','http://another.example.com/page?address=' + QueryString.email);

Однако, когда я помещаю этот код в исходный код страницы, то при загрузке страницы в консоли появляется следующая ошибка: Uncaught TypeError: Y.QueryString.parse is not a function

Моя текущая теория состоит в том, что YUI3 загружается асинхронно по частям, и этот код выполняется в тот момент, когда Y.all доступен, но Y.QueryString.parse нет... это правильно? Каково было бы лучшее решение для этого?

1 ответ

Yui3 действительно построен на асинхронной загрузке модулей, в этом случае вы пропустите querystring модуль.

Вам нужно обернуть свой код вызовом Y.use:

Y.use('querystring', function(Y) {
  var MyButton = Y.all('a[href="http://another.example.com/page"]');
  var QueryString = Y.QueryString.parse(window.location.search.substring(1));
  MyButton.setAttribute('href', 'http://another.example.com/page?address=' + QueryString.email);
});
Другие вопросы по тегам