我有一个webview应用程序,几乎所有竞争内容都是使用jQuery AJAX
函数加载的。我的问题是,当我单击移动后退按钮时,它没有走,而是关闭了应用程序或重新加载。
从我的网站上,我创建了一个jquery函数以返回并正常工作,因此我想到的是在具有先前保存URL的android代码内执行该函数。
所以我创建了JavascriptInterface
,以便从jQuery FSAndroid.setAsycUrlInterface(url)
获取先前的URL,但是我的问题是如何在jsBackAsync(from, url)
的android代码中执行onKeyDown
?
这是我的JavascriptInterface类
public class AsyncInterface {
Context iContext;
AsyncInterface(Context contex) {
iContext = contex;
}
@JavascriptInterface
public void setAsycUrlInterface(String geturl) {
SharedPreferences prefs = getSharedPreferences(getPackageName(), MODE_PRIVATE);
SharedPreferences.Editor edit = prefs.edit();
edit.putString("lastAsyncUrl", geturl);
edit.commit();
}
}
这是onKeyDown方法
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && shopwebview.canGoBack()) {
shopwebview.goBack();
/* Something like this i want to do
SharedPreferences asyncprefs = getSharedPreferences(getPackageName(), MODE_PRIVATE);
String lastAsyncUrlTab = asyncprefs.getString("lastAsyncUrl", "");
if(!lastAsyncUrlTab.equals("")) {
jsBackAsync("Android", lastAsyncUrlTab);
}
*/
return true;
}
return super.onKeyDown(keyCode, event);
}
这是我的jquery代码
$(document).ready(function(){
$('a.AsyncUrl').click(function(){
var url = $(this).attr('href');
FSAndroid.setAsycUrlInterface(url);
});
function jsBackAsync(from="button", url){
if(from == 'Android'){
/*Clear the back url or set new one here*/
FSAndroid.setAsycUrlInterface(null);
}
$('#PageSet').load(url);
}
});