Ошибка при использовании 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);
});