5

我目前正在 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 没有定义。

所以我确信在我的许多尝试中都存在错误,所以如果有人可以向我提出一些建议,无论是与工作流相关的还是如何修复我的设置/代码,那就太好了。

谢谢

4

2 回答 2

1

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

尝试类似:

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

nope: jsFolderPath + 'polyfill.js'

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

于 2013-06-07T12:55:03.850 回答
1

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

于 2013-02-26T05:35:59.297 回答