如何将parameter passing给PhoneGap应用程序中的本地页面?

在PhoneGap应用程序中,我们可以使用以下代码设置起始页面。

self.viewController.wwwFolderName = @"www"; self.viewController.startPage = @"index.html"; 

但是如果我想传递参数到这个页面,它将不起作用。

 self.viewController.startPage = @"index.html?parameter=abc"; 

这将导致NSURLErrorRedirectToNonExistentLocation错误。

有没有简单的方法来传递参数到本地页面?

在phonegap应用程序中,您不能通过传递参数来调用本地页面,因为系统会search与您传递的名称完全相同的文件。 它不会将参数视为查询string。

 Ex: when you say "index.html?param=abc", instead of calling page index.html with a parameter called param having value abc. It calls the page "index.html?param=abc" which doesn't exist in the system. Hence, the error. 

解决此问题的最佳方法是将参数保存为调用页面中的本地存储,并在下一页中使用它们并销毁它们。

 Ex: In your calling JavaScript file, use: window.localStorage.setItem('param', 'abc'); Now, in your called file, access the local storage and delete it param abc = window.localStorage.getItem('param'); window.localStorage.removeItem('param'); 

希望有所帮助。

编辑:对于cordova和Phonegap应用这个插件是有用的http://goo.gl/TWN8wq,所以你不必自己动手修改Android清单或iOS plist文件。 在这两个平台上也可以使用相同的handleOpenURL()函数(不能没有插件, handleOpenURL()只是一个iOS的东西)

无论如何,手动:

要达到你想要的,你必须:

1 – 在customurl中注册一个自定义scheme(如HelloWorld)和自定义url(如customurl

2 – 在页面上放置一个链接,如<a href=”HelloWorld://customurl/username=James Bond”>HelloWorld</a>

3 – 使用phonegap <3.0的函数handleOpenURL或Phonegap 3+的OpenURL获取参数username的值,如:

 function handleOpenURL(url) { //Here we can parse the url . var link = url.split('='); var username = link[1]; alert(username); } 

有一个关于如何做到这一点 (iOS)的完整教程,这是我从哪里采取的一切。

学分到Sourabha库马尔Sahoo

如果我是你,我只是通过一个你会创build的插件方法(即plugin.GetQueryString())将所有的信息传递给JavaScript)你可以创build一个通用的插件方法,将所有的查询参数作为一个string返回,然后你可以用下面的方法在javascript中处理它:

 function getQueryParams(qs) { var params = {}, tokens, re = /[?&]?([^=]+)=([^&]*)/g; while (tokens = re.exec(qs)) { params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]); } return params; } window.$_GET = getQueryParams(plugin.GetQueryString()); 

因此,您将获得一个很好的数据结构,包含您可以按名称访问的所有GET参数。