javascript and webview in android

javascript and webview in android

本文关键字:android in webview and javascript      更新时间:2023-09-26

我是Android平台的初学者,在webview和javascript的帮助下制作了一个应用程序.当我在真实设备上运行我的代码时,它什么都不显示。这是我的代码:

公共类 MainActivity 扩展 AppCompatActivity { 网络视图 view_1,view_2; 图像视图图像视图;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getSupportActionBar().hide();
    String url_1="<script type='"text/javascript”  src='"http://ds.claymcenter.com/embed.js'">'n" +
            "requestAd('Rh8uGpcrlYMjXN1s', 'banner', 'ads', '320' , ‘50');'n" +
            "</script>'n" +
            " 'n" +
            "<div id='ads'></div>";
    String url_2="https://paytm.com/";
    view_1 = (WebView) findViewById(R.id.webViewGoogle);
    view_2 = (WebView) findViewById(R.id.webViewFacebook);
    view_1.getSettings().setJavaScriptEnabled(true);
    view_1.loadData(url_1, "text/html", null);
    view_2.getSettings().setJavaScriptEnabled(true);
    view_2.loadUrl(url_2);
    imageView = (ImageView) findViewById(R.id.imageView);
    imageView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            view_1.reload();
            view_2.reload();
        }
    });
} }

我总是花很多时间试图让这样的事情发挥作用,我不记得我是如何做这些事情的,但这里有一些想法:

首先要尝试的是:将该字符串包装在url_1 <html><body>...</body></html>标签中。

第二件要尝试的事情:当js文件完全加载时,你可能必须使用某种"onDocumentReady"事件来调用你的javascript。

要尝试的第三件事:像这样拆分函数调用:

String url_1="<script type='"text/javascript'”  src='"http://ds.claymcenter.com/embed.js'">'n" +
        "</script>'n" +
        "<div id='ads'></div>";

String call = "javascript:requestAd('Rh8uGpcrlYMjXN1s', 'banner', 'ads', '320' , ‘50');'n"
使用

js 文件加载 html,然后使用 WebViewClient.onPageFinished() 查看何时加载 javascript 调用(不要剪切和粘贴此代码,这只是一个模板):

    webView.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO: need to find out what is in url when html with js file loads
            if (urlMatches()) {
                view.loadData(call, "application/javascript", null); // not sure about the mime type
            }
        }
    });

这就像"onDocumentReady",但在Java代码中这样做。

您可能会因为loadData文档中的以下声明而陷入困境:

请注意,JavaScript 的同源策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用"data"以外的任何方案加载的内容,包括"http(s)"。若要避免此限制,请将 loadDataWithBaseURL() 与适当的基本 URL 一起使用。

因此,要尝试的最后一件事是使用 loadDataWithBaseURL .