我们正在构建一个带有卓别林的触发器应用程序。出于开发目的,如果我们可以使用资产的绝对路径,那就太好了,例如:
<link rel="stylesheet" href="/_forge/stylesheets/app.css">
<script src="/_forge/javascripts/vendor.js"></script>
<script src="/_forge/javascripts/app.js"></script>
是否可以在触发器中执行此操作?
我们正在构建一个带有卓别林的触发器应用程序。出于开发目的,如果我们可以使用资产的绝对路径,那就太好了,例如:
<link rel="stylesheet" href="/_forge/stylesheets/app.css">
<script src="/_forge/javascripts/vendor.js"></script>
<script src="/_forge/javascripts/app.js"></script>
是否可以在触发器中执行此操作?
不幸的是,不同的平台在 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 慢。在这种情况下,您所有的相对路径都应该始终相同。
最简单的事情可能是检测你的 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>