3

我们正在构建一个带有卓别林的触发器应用程序。出于开发目的,如果我们可以使用资产的绝对路径,那就太好了,例如:

<link rel="stylesheet" href="/_forge/stylesheets/app.css">
<script src="/_forge/javascripts/vendor.js"></script>
<script src="/_forge/javascripts/app.js"></script>

是否可以在触发器中执行此操作?

4

2 回答 2

3

不幸的是,不同的平台在 Trigger 上有不同的 URL(因为它们有自己的特性和限制)。

如果要获取绝对路径,可以使用文件模块并按照以下方式执行操作:

forge.file.getLocal("js/app.js", function (file) {
    forge.file.URL(file, function (url) {
        $('body').append('<script src="'+url+'"></script>');
    });
});

我不确定为什么绝对路径有用,但我建议只使用一个 html 页面 (index.html),因为在手机上导航到新页面比使用 javascript 更改 dom 慢。在这种情况下,您所有的相对路径都应该始终相同。

于 2013-04-27T22:11:18.367 回答
1

最简单的事情可能是检测你的 index.html 中是否存在 forge 并相应地加载 javascript:

<script type="text/javascript">
  function addScript(src, callback) {
    var tag  = document.createElement('script');
    tag.type = 'text/javascript';
    tag.src = src;

    tag.onload = callback;

    document.getElementsByTagName('head')[0].appendChild(tag);
  }


  var vendor = "javascripts/vendor.js";
  var app    = "javascripts/app.js";

  if(window.forge === undefined) {
    vendor = "/"+vendor;
    app    = "/"+app;
  }

  addScript(vendor, function() {
    addScript(app, function() {
      require('initialize');
    });
  });
</script>
于 2013-04-29T18:42:22.283 回答