使用javascript后,Webview无法正常工作

时间:2016-10-09 18:48:36

标签: javascript android jquery webview

我正在构建一个使用webview的应用。它加载了网站的移动版本。但我的客户希望我更改和删除一些文字。 我用javascript做了但是在我这样做之后,一些滑块停止工作了。没有javascript它完美无缺。但我必须以某种方式更改和删除文本。

我的网页设置;

wSettings=webView.getSettings();
        wSettings.setJavaScriptEnabled(true);
        wSettings.setDomStorageEnabled(true);
    webView.loadUrl("http://www.evdusum.com");

和我在onPageFinished中使用的javascript;

@Override
            public void onPageFinished(WebView view, String url) {

                String link1 = "SİTEDE ARAYIN";
                String link2 = "ARA";
                String a="Bu sitede kullanılan yazılı ya da görsel dokümanlar izinsiz kullanılamaz.";
                String b=" ";
                view.loadUrl("javascript:(function(){document.body.innerHTML = document.body.innerHTML.replace('" + link1+"', '" + link2+"')})()");
                view.loadUrl("javascript:(function(){document.body.innerHTML = document.body.innerHTML.replace('" + a+"', '" + b+"')})()");

                ((RelativeLayout)findViewById(R.id.start)).setVisibility(View.GONE);

            }

1 个答案:

答案 0 :(得分:0)

在Android api 18(JELLY_BEAN_MR1)之前,您可以使用此view.loadUrl("javascript:");。只需使用ONE调用即可插入并调用你的js。如果您需要执行长代码,请构建一个函数并在"同一个调用" webView.loadUrl()

一些例子:

webView.loadUrl("javascript:(function() {" +
    "var parent = document.getElementsByTagName('head').item(0);" +
    "var script = document.createElement('script');" +
    "script.type = 'text/javascript';" +
    "script.innerHTML =  function your_function(var1, var2){document.body.innerHTML = document.body.innerHTML.replace(var1, var2); return true;}" +
    "parent.appendChild(script);" +
    "your_function('"+link1+"','"+link2+"')" + ";})();");

Android api> = 19使用webView.evaluateJavascript。这里有一些例子:

webView.evaluateJavascript("(function() {" +
        "var parent = document.getElementsByTagName('head').item(0);" +
        "var script = document.createElement('script');" +
        "script.type = 'text/javascript';" +
        "script.innerHTML =  function your_function(var1, var2){document.body.innerHTML = document.body.innerHTML.replace(var1, var2); return true;}" +
        "parent.appendChild(script);" +
        "return your_function('"+link1+"','"+link2+"');})();", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        Log.v("TAG", "Response from JS"+value)
    }
});