gpt4 book ai didi

javascript - WebView 中的 Android : Detect history. back()

转载 作者:搜寻专家 更新时间:2023-11-01 07:38:32 25 4
gpt4 key购买 nike

我的 WebView 中的一个按钮用于使用 history.back() JavaScript 调用返回。我不太了解 JavaScript,但经过一番搜索,我发现我们可以使用 WebViewaddJavascriptInterface() 方法。

现在,我打算在单击按钮时完成我的 Activity。我得到了这样的东西:

public class MyActivity extends Activity {
private static final String sTag = "MyActivity";

private WebView mWebContent;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browser_page);


mWebContent = (WebView) findViewById(R.id.webContent);

mWebContent.getSettings().setJavaScriptEnabled(true);
mWebContent.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebContent.getSettings().setBuiltInZoomControls(true);
mWebContent.addJavascriptInterface(new JavaScriptInterface(), "history"); //history.back();

Bundle extras = getIntent().getExtras();

if (extras != null) {
mWebContent.loadUrl(extras.getString("URL"));
}
}

public class JavaScriptInterface {
JavaScriptInterface() {
}

public void back() {
Log.v(sTag, "back pressed");
MyActivity.this.finish();
}
}
}

但不幸的是,当按下按钮时, Activity 没有完成,我也没有在日志中得到任何东西。

这是按钮的 html:

<a href="javascript:void(0);">
<img src="images/btn-go-back.png" onClick="history.back();" border="0" />
</a>

我做错了什么?

提前致谢。


编辑: 只是想澄清一个事实,即更改 html 对我来说不是一个选项。我无权处理 html 代码 :)。我必须在应用程序中处理它。


编辑:尝试将 history.back() 更改为 window.history.back()(本地),仍然没有变化。


编辑: 我通过本地加载 html 内容进行试验,发现如果我将 history.back() 更改为类似 android_app.back( ) 并通过名称 android_app 注册我的 JavaScriptInterface 它工作正常。这是为什么?这是否意味着我们不能使用history 来注册一个接口(interface)?开发人员文档是否提到了这一点?

最佳答案

阅读本文的导航网页历史记录部分。它完整​​地讲述了 android webviews。它讲述了如何让 webviews 处理历史。

http://developer.android.com/guide/webapps/webview.html

希望这对您有所帮助。

关于javascript - WebView 中的 Android : Detect history. back(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7190692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com