gpt4 book ai didi

android - 是否可以在 onCreateWindow 创建的 WebView 上调用 addJavascriptInterface?

转载 作者:行者123 更新时间:2023-11-29 14:15:02 42 4
gpt4 key购买 nike

我有一个简单的浏览器应用程序,我的 onCreateWindow 看起来像这样:

if (userGesture) {
WebView childView = new WebView(webBrowserActivity);
WebSettings settings = childView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setSupportZoom(true);
settings.setJavaScriptCanOpenWindowsAutomatically(true);
settings.setBuiltInZoomControls(true);
settings.setSupportMultipleWindows(true);
settings.setLoadWithOverviewMode(true);
settings.setUseWideViewPort(true);
childView.addJavascriptInterface(new MyInterface(),"NAME");
<--- code in here to add the view to a ViewPager.
WebView.WebViewTransport transport = (WebView.WebViewTransport) resultMsg.obj;
transport.setWebView(childView);
resultMsg.sendToTarget();
Log.v(TAG, "Opening popup for " + childView.getUrl());
webBrowserActivity.invalidateOptionsMenu();
return true;
} else {
return false;
}

我试过稍后添加这个接口(interface),我也试过在页面加载后调用 reload()loadUrl() 因为文档表示必须在加载页面之前添加 javascript 接口(interface)。这些都没有帮助。有没有人成功地做到了这一点?

谢谢。

编辑:我应该提到我在 4.4 上看到更多,我正在使用 Chrome 的桌面调试器,我可以进入控制台并在第一个 webview 上看到 window.NAME 对象,而不是在第二个上。在 4.3 上它似乎经常工作。

我编辑了上面的代码以显示我正在使用的设置。我添加到 WebView 的 javascript 接口(interface)在添加到 Activity 启动时创建的第一个 WebView 时工作正常。

最佳答案

不幸的是,KitKat WebView 中存在一个错误,导致无法在弹出窗口上注册 JavaScript 接口(interface)。恐怕这个问题没有已知的解决方法,除了你建议的,保留弹出窗口的 URL,从 onCreateWindow 返回 false,然后创建一个全新的 webview 并将弹出 URL 加载到其中。

关于android - 是否可以在 onCreateWindow 创建的 WebView 上调用 addJavascriptInterface?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22060561/

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