Ste*_*ieB 9 api url jquery gruntjs
所以我正在使用grunt编写一个jquery插件,在我的插件中我还需要调用webservices.
webservice url域将始终与用户需要为我们的插件添加的.js文件的位置相同.所以即相对
1)包含插件的JS文件
2)在我的JS调用API URL中
需要是
api_domain: "http://mydomain1/api/v1"
Run Code Online (Sandbox Code Playgroud)
我希望api域相对于我试过的调用它的JS文件的域
api_domain: "/mydomain1/api/v1"
Run Code Online (Sandbox Code Playgroud)
但这会占用浏览器的域名.
所以我想知道实现这一目标的最佳方法是什么
1)使用.NET处理程序从context.request.url插入正确的域名
2)在Grunt构建中为我将部署的每个环境创建一个特定的.js,其中包含JS中的完整URL
3)其他选择?
好吧,你实际上可以让脚本使用 jquery 找到它自己的源。只要确保给 js 文件一个足够唯一的名称即可。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://rawgit.com/demux/4d4ce440d7c379305a9a/raw/findfilehosttest.js"></script>Run Code Online (Sandbox Code Playgroud)
实际脚本:
$(function(){
var url = $("script[src$='findfilehosttest.js']").attr('src')
var matches = url.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i)
var domain = matches && matches[1]
alert(domain)
})
Run Code Online (Sandbox Code Playgroud)
但总的来说,我认为最好保持简单。因此允许用户手动设置服务器的 URL,如下所示:
<script>
var MY_API_URL = 'https://instance1.myapiserver.foo'
</script>
<script src="/whateverpath/myapiscript.js"></script>
Run Code Online (Sandbox Code Playgroud)
这还允许他们在自己的服务器上托管脚本,甚至出于任何原因代理它。
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |