如何在Android webview中设置Javascript属性

发布于 2024-12-04 20:22:28 字数 883 浏览 0 评论 0原文

我正在构建一个 Android 应用程序,将 Web 应用程序加载到 Web 视图中。当用户在浏览器中访问 Web 应用程序时,会出现一个弹出窗口,询问他们是否要为该页面添加书签。

对于本机应用程序,我想删除它。

对于 iPhone,我能够执行此操作:

    [webView stringByEvaluatingJavaScriptFromString:@"AppConfig.showBookmarkPrompt=false;"]; 

对于 Android,我尝试了以下操作:

@Override
    public void onPageFinished(WebView view, String url) {
        view.loadUrl("javascript:(function(){"+
                "AppConfig.showBookmarkPrompt=false;})()");
    }

Android 版本不起作用。我认为 JavaScript 是在书签弹出窗口显示后运行的。我真的不知道为什么 iPhone 版本可以用,而 Android 版本不行。

我还有很多其他方法可以实现我的目标,但我想知道是否有人可以解释为什么 iPhone 方法有效,以及 Android 中是否有类似的方法。我一直在通过谷歌搜索阅读有关它的内容,但我仍然不完全清楚。

感谢我得到的任何帮助。

编辑

问题是对于Android,我在JavaScript中传递一个函数,我应该像这样设置属性: view.loadUrl("javascript:AppConfig.showBookmarkPrompt=false;");

它的执行方式一定有一些我不太明白的差异。

I am building an Android application that loads a web application in to a web view. When a user visits the web application in a browser a pop up asking if they want to bookmark the page appears.

For the native app I want remove this.

For iPhone I was able to do this:

    [webView stringByEvaluatingJavaScriptFromString:@"AppConfig.showBookmarkPrompt=false;"]; 

For Android I tried this:

@Override
    public void onPageFinished(WebView view, String url) {
        view.loadUrl("javascript:(function(){"+
                "AppConfig.showBookmarkPrompt=false;})()");
    }

The Android version doesn't work. I presume that the javascript is being run after the bookmark popup has been shown. I don't really know why the iPhone version does works and not the Android.

There are many other ways I can achieve my goals but I am wondering if anybody can explain why the iPhone method works and if there is something similar in Android. I have been reading about it through Google searches but it is still not entirely clear to me.

Thanks for any help I get.

EDIT

The problem was for Android I was passing a function in JavaScript where I should have just set the property like this: view.loadUrl("javascript:AppConfig.showBookmarkPrompt=false;");

There must be some difference in the way it is executed that I don't quite understand.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

江南烟雨〆相思醉 2024-12-11 20:22:28

将其放在 Activity 的 onCreate() 上..

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

然后调用您的代码...

 @Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl("javascript:AppConfig.showBookmarkPrompt=false");
}

有关详细信息,请参阅 这里

put this on onCreate() of Activity..

WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);

then call your code...

 @Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl("javascript:AppConfig.showBookmarkPrompt=false");
}

For more info look at here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文