如何将复杂的javascript自运行函数注入android中的webview?

如何将复杂的javascript自运行函数注入android中的webview?,android,android-fragments,android-webview,android-websettings,javascript-injection,Android,Android Fragments,Android Webview,Android Websettings,Javascript Injection,我试图在运行服务器url“www.myserver.com”的webview中注入javascript函数。但是,我不能这样做。我尝试了几种方法,但没有成功。我尝试设置js警报,在读取js文件时不会弹出警报。我不确定我做错了什么。以下是我目前的代码: 我的js文件“page.js”: 以下是我的webview代码: @Override public void onPageFinished(WebView view, String url) {

我试图在运行服务器url“www.myserver.com”的webview中注入javascript函数。但是,我不能这样做。我尝试了几种方法,但没有成功。我尝试设置js警报,在读取js文件时不会弹出警报。我不确定我做错了什么。以下是我目前的代码: 我的js文件“page.js”:

以下是我的webview代码:

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

                        String javascript = "";
                        try{
                            AssetManager manager = view.getContext().getAssets();
                            InputStream is = manager.open("page.js"); 
                            InputStreamReader isr = new InputStreamReader(is);
                            BufferedReader br = new BufferedReader(isr);

                            String line;
                            while (( line = br.readLine()) != null) {
                                javascript += line;

                            }
                            is.close();
                        }

                        catch(Exception e){}

                        view.loadUrl("javascript:" + javascript);


                    }

                webview.setWebChromeClient(new WebChromeClient() {});
                webview.loadUrl(url);
有没有办法让警报弹出?
注意:当我删除js中的所有函数并只保留警报时,警报会工作,但在我重新添加必要的js函数后,警报不再工作。知道是什么阻止了它像预期的那样注入js吗?

考虑一下这段代码。这是简单的html和javascript代码,以page.js为模型

 <html>
   <script type="text/javascript">

       (function() { alert('inside function'); })
       alert('ok');

   </script> 
 </html>

(函数(){alert('inside function');})
警报(“正常”);
执行此操作时,可以推断函数中的警报不会在开始时执行,除非您专门调用它

单击运行函数:(尝试此操作)


var run=(函数(){alert('inside function');})
警报(“正常”);
运行你的函数[自运行](试试这个)


var run=(函数(){alert('inside function');})
警报(“正常”);
//您需要执行已命名的函数
run();

如何修复并调用我的js函数使其工作?我在本地代码中的何处以及如何触发它来替换html中的onclick=“run”?我已经更新了一个新示例。您需要命名函数,并执行它以运行itthanks。当我将整个文件内容复制粘贴为字符串,而不是在我的输入流阅读器中以“file.js”的形式读取内容时,它就会起作用。我想这也解释了我的js文件中的标签和新行。你知道有什么方法可以确保这些选项卡和新行不会出现吗?不管怎样,谢谢你的回复。您还可以帮助我解决我面临的关于从同一javascript字符串解析json的问题吗:
 <html>
   <script type="text/javascript">

       (function() { alert('inside function'); })
       alert('ok');

   </script> 
 </html>
<html>
   <input type="button" onclick="run()" value="Start" />

   <script type="text/javascript">
       var run = (function() { alert('inside function'); })
       alert('ok');

    </script>
</html>
<html>
   <script type="text/javascript">
       var run = (function() { alert('inside function'); })
       alert('ok');

       //you need to execute your function that you have named
       run();

    </script>
</html>