如何在加载前将参数传递到javascript文件url
How to pass a parameter to javascript file url before load?
我正在使用angularjs
,并希望检查参数lang=XX
的url。
如果找到,我的js调用应该将语言参数替换为url中的参数:
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?language=en"></script>
这可能吗?
有一种"Angular"方法,但是,我不确定它对简单的Javascript解决方案有多有用。无论如何,您都可以使用$location
服务来搜索当前URL。假设您有lang
作为参数,那么您将使用$location.search().lang
来返回lang
的值(如果存在的话)。
然后,您将创建一个服务或工厂,使用语言参数异步加载谷歌地图。您还需要提供一个回调方法。那个回调方法将是一个承诺。这是样品工厂:
app.factory('GMapsFactory', function($q, $window) {
var _base = 'https://maps.googleapis.com/maps/api/js?language=';
return {
loadLocale: function(loc) {
var _defer = $q.defer();
var _tag = document.createElement('script');
_tag.src = _base + loc + '&callback=gmLocaleCallback';
$window.gmLocaleCallback = _defer.resolve;
document.body.appendChild(_tag);
return _defer.promise;
}
};
});
作为一个工厂,这是很有用的,因为它可以从应用程序移植到应用程序。然而,在单个应用程序中,它只会有用一次,因为您不会多次调用它。
然后,在您的控制器中:
app.controller('MainCtrl', function($scope, $location, GMapsFactory) {
var lang = $location.search().lang || 'en';
GMapsFactory.loadLocale(lang).then(function() {
console.log(google.maps);
});
});
除非你有理由需要使用Angular,否则简单的方法还是在你的索引中使用简单的javascript:
// From SO solution: http://stackoverflow.com/a/901144/715597
function getParameterByName(name) {
name = name.replace(/['[]/, "''[").replace(/[']]/, "'']");
var regex = new RegExp("[''?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : decodeURIComponent(results[1].replace(/'+/g, " "));
}
var _lang = getParameterByName('lang');
document.write('<script src="https://maps.googleapis.com/maps/api/js?language='+_lang+'">'x3C/script>');
这不是一种"角度"方式,但允许您向页面添加脚本:
var script=document.createElement('script');
script.src='path-to-file.js';
script.className='myscript';
script.setAttribute('data-lang','en-US');
document.body.appendChild(script);
相关文章:
- 使用压缩的JavaScript文件(不是运行时压缩)
- 如何包含特定于每个视图angularjs的javascript文件
- 将数据从javascript文件导入VB.Net页面
- Chrome加载旧版本的Javascript文件
- 操作员”;新的“;根据我想在几个JavaScript文件中使用的类,在JavaScript中使用
- gulp-if-javascript文件,但不在gulp-useref的特定目录中
- 如何在visualstudio中调试web api时编辑javascript文件
- 关于引入外部javascript文件的问题&css通过https
- 有没有办法在tinymceiframe中加载一个外部javascript文件
- 什么'是在asp.net MVC中将本地化的resources.resx文件转换为javascript文件的有效
- 在一个javascript文件中为整个网站创建标签
- 如何在定义js文件后为外部javascript文件设置变量
- 显示IIS上javascript文件(SOAP请求)的XML响应
- ResolveUrl没有'我似乎不适合当链接到具有动态虚拟目录的外部javascript文件时
- 我应该将MVC视图特定的javascript文件放在哪个文件夹中
- Django'支持Javascript文件中的翻译
- MVC正在忽略我的Javascript文件
- 为什么不't我的ruby代码与javascript文件一起插入
- 在Javascript文件中获取PHP变量
- 如何在Windows中将Javascript文件编译成二进制文件