我使用jQTouch构建了一个移动网站,现在我一直在努力让同一个网站使用PhoneGap。对于PhoneGap,我已将大部分资产(页面,图像,JS,CSS等)移动到www目录中,但我仍需要通过Ajax加载一些动态内容。在移动网站上,我使用相对网址来加载其他内容。但是,使用PhoneGap,我还没有找到使用相对URL访问我的移动网站的方法,并且被迫使用绝对URL。我的问题是这样的:有没有办法在PhoneGap中使用相对URL?可能就像在PhoneGap初始化期间设置基本URL一样?
答案 0 :(得分:4)
使用PhoneGap时,主要文件将在手机上,因此相对文件将相对于手机上的位置。
如果您需要访问远程服务器(您的移动网站)上的文件,则必须绝对指定该文件。
如果您的PhoneGap应用中的主HTML页面位于file://www/index.html
,并且您尝试访问相关文件(例如“logo.png”),那么请指定<img src="logo.png" />
您真正从中获取它file://www/logo.png
。
如果你真的想要实际在远程网站上的logo.png版本,你必须提供完整的(绝对)路径,否则浏览器无法知道当你指定“logo.png”时是指“http://www.your-site.com/logo.png”中的那个。
答案 1 :(得分:3)
您可以尝试using the <base>
tag。这会将您的基本URL设置为您需要的任何内容:
<base href="http://yourdomain.com/">
<script src="js/remotescript.js"></script>
请注意,这意味着您的本地脚本需要采用绝对形式:
<script src="http://localhost/js/phonegap.js"></script>
有关此说明,请参阅this other question for more info。那个人建议在本地相对URL 之前加上 dot (.
),尽管我没有测试这个:
<script src="./js/phonegap.js"></script>
答案 2 :(得分:0)
我知道这是6/7岁,但是对于任何其他来此问题相同的人... 这是一个解决方案,因为没有其他“打包”的解决方案:
3个快速步骤:
1)将您的站点域存储在全局javascript变量中
var currentloc = 'https://example.com'
2)使用临时变量将相对路径添加到currentloc
var relpath = '/need/jsonex'
var ajaxcall = currentloc + relpath
$.ajax({...
3)如果您确实更改了要从站点调用相对路径的所谓“位置”,请调整currentloc
currentloc = currentloc + '/new/path'
**请记住,如果将currentloc
设置为全局变量,则需要跟踪这些更改。
希望这会有所帮助。