繁体   English   中英

在Modernizer / yepnope.js中使用Drupal.settings.basePath加载

[英]Using Drupal.settings.basePath in Modernizer / yepnope.js loads

我目前正在开始在Acquia上开发drupal网站。 使用git和本地工作对我来说是一个新的工作流程。 在本地构建并尝试使用Modernizr load / yepnope时,我的script.js文件中的JS通常看起来像这样。

Modernizr.load([
    {
    test: Modernizr.mq('only all'),
    nope: '/sitename/docroot/sites/all/themes/theme/js/libs/polyfill.js'
    },
    ....

所以它在我的机器上本地工作,但当我提交我的更改并推送到我的acquia开发服务器时,加载的脚本的文件路径是不正确的,因为它不是我想的相同的设置。

http://mysite.devcloud.acquia-sites.com/mysite/docroot/sites/all/themes/theme/js/libs/polyfill.js

它必须是下面的,没有URL中的mysite / docroot。

http://mysite.devcloud.acquia-sites.com/sites/all/themes/theme/js/libs/polyfill.js

这样就把我带到了Drupal.settings.basePath。 如果我打印出来,它会在我的本地设置上给我/ mysite / docroot /。 如果我在开发服务器上执行它,它会打印出不同的东西(可能只是/)。

所以我作为业余爱好者认为我可以做这样的事情..(原谅可怜的样本,我知道它可以做得更好)

var myroot = Drupal.settings.basePath

Modernizr.load([
{
test: Modernizr.mq('only all'),
nope: myroot + 'sites/all/themes/theme/js/libs/polyfill.js'
},
....

这当然不起作用。 只返回query1未定义。

所以我确信在我的许多尝试中都存在错误。所以如果有人可以向我推荐一些内容,无论是工作流相关还是如何修复我的设置/代码,那都会很棒。

谢谢

也许我在使用Acquia时只有不同的本地设置,但为什么不使用像/sites/all/themes/theme/js/libs/polyfill.js这样的相对路径?

这有点晚了但无论如何它可能会有所帮助:

尝试类似的东西:

var jsFolderPath = window.location.protocol + "//" + window.location.host+ Drupal.settings.basePath + 'sites/all/themes/theme/js/libs/';

nope: jsFolderPath + 'polyfill.js'

然后,您可以轻松地为每个yesnope添加polyfill,无论是在dev服务器还是在locahost中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM