使用YUI3时出错:“Y.QueryString.parse不是函数”

时间:2015-10-21 21:41:03

标签: javascript yui yui3

我正在构建一个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 个答案:

答案 0 :(得分:0)

Yui3确实围绕asychonous模块加载,在这种情况下你错过了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);
});