无法在android中运行webview的javascript

时间:2015-03-17 07:00:15

标签: javascript android jquery webview android-webview

我有html字符串,我将其加载到webview。记住html不是文件,它只是一个字符串。 例如,如果我们把我的html字符串改为

String html = "<html>
   <head>
   <title>business card template-2</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  </head>
 <body>
    <div id="name_text"><font face="verdana" color="#525405">Name</font></div>
   <div id="mobile"><font face="verdana" color="#525405">Mobile</font></div>
 </body>
</html>"

我正在加载到webView中的这个html字符串。

我正在使用脚本文件动态替换字体标记下的名称,即在上面的html字符串中,我希望用实际名称替换名称,甚至代替具有实际数字的移动。

所以我已将脚本附加到上面的html字符串中,并且应该完成所有替换工作。

例如我连接到html字符串的脚本是

<script type='text/javascript'>var name_text='Rupesh';" var tel_no='XXX-XXX-XX'; </script>
<script type='text/javascript' src='file:///android_asset/js_files/jquery.js'></script>
<script type='text/javascript' src='file:///android_asset/js_files/template.js'></script>

我保存在assets->js_files文件夹下的template.js和jquery.js文件,因此试图通过提供路径file:///android_asset/js_files/template.js来访问

在template.js里面,我正在替换它。

当我在PC浏览器中通过提供这两个.js文件的路径时,这很好用。但在Android手机中我无法加载它。是否有替代方案可以替代。

以编程方式我将连接的字符串加载到webview 也就是说,

String html_script = html+script;
webViewCard.getSettings().setJavaScriptEnabled(true);
webViewCard.loadData(html_script,"text/html", "UTF-8");

有人可以帮助我。

更新

我已经为此找到了解决方案,但由于一些限制,我对此并不十分满意。这是下面的解决方案,

我添加了以下代码行

WebSettings settings = webViewCard.getSettings();
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
settings.setAllowUniversalAccessFromFileURLs(true);
settings.setAllowFileAccessFromFileURLs(true);
 }

但问题是我必须限制我的应用仅适用于4.2及以上的用户。 有什么我可以做的。

1 个答案:

答案 0 :(得分:0)

1.如果您的手机/模拟器在Gingerbread上运行

我自己也遇到过类似的问题。我使用2.3 Gingerbread(API 10)模拟器来测试我的应用程序。我在android forum上发现了更多相关内容。

2.如果您的手机/模拟器在4.2 Jellybeans上运行

来自Android 4.2文档:

  

警告:如果您已将targetSdkVersion设置为17或更高,则必须   将@JavascriptInterface注释添加到您想要的任何方法   提供您的网页代码(该方法也必须是公开的)。如果你   不提供注释,那么该方法将无法访问   在Android 4.2或更高版本上运行时的网页。