包含 javascript 的图像不会出现在 webView 中
Posted
技术标签:
【中文标题】包含 javascript 的图像不会出现在 webView 中【英文标题】:image included javascript not appear in the webView 【发布时间】:2010-12-31 23:00:50 【问题描述】:我使用 webView 显示 javascript,一个图像包含在 javaScrip 中,但 webView 没有运行图像,相反出现“?”图像。为什么? 我的代码:
demo.html
<html>
<script language="javascript">
/* This function is invoked by the activity */
function wave()
document.getElementById("droid").src="android_waving.png";
alert("2");
</script>
<body>
<!-- Calls into the javascript interface for the activity -->
<a onClick="window.demo.clickOnAndroid()"><div style="width:80px;
margin:0px auto;
padding:10px;
text-align:center;
border:2px solid #202020;" >
<img id="droid" src="android_normal.png"/><br>
Click me!
</div></a>
</body>
</html>
public class webJsDemo extends Activity
/** Called when the activity is first created. */
private WebView mWebView;
private Handler mHandler = new Handler();
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.wv1);
WebSettings webSettings = mWebView.getSettings();
webSettings.setSavePassword(false);
webSettings.setSaveFormData(false);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
mWebView.setWebChromeClient(new MyWebChromeClient());
mWebView.addJavascriptInterface(new DemoJavaScriptInterface(), "demo");
mWebView.loadUrl("file:///android_asset/demo.html");
final class DemoJavaScriptInterface
DemoJavaScriptInterface()
/**
* This is not called on the UI thread. Post a runnable to invoke
* loadUrl on the UI thread.
*/
public void clickOnAndroid()
mHandler.post(new Runnable()
public void run()
mWebView.loadUrl("javascript:wave()");
);
/**
* Provides a hook for calling "alert" from javascript. Useful for
* debugging your javascript.
*/
final class MyWebChromeClient extends WebChromeClient
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result)
// TODO Auto-generated method stub
Log.d("aa", message);
Log.d("url", url);
Log.d("result", ""+result);
result.confirm();
return super.onJsAlert(view, url, message, result);
我将 android_normal.png 和 android_waving.png 放在 assets 和 drawable 文件夹中
the result
【问题讨论】:
我不知道Android也不知道Webview,但是如果有一个“?”图像很可能您可以检索系统尝试加载的 URL。该网址是什么样的?这是正确的吗?这很可能是路径问题。 我在 assets 文件夹的 js android_normal.png 中使用了 。如果我使用 file:///android_asset/android_normal.png,结果与 android_normal.png 相同 您可以直接在浏览器中拨打file:///android_asset/android_normal.png
并且有效吗?
是的,你是对的,因为我错误地将图像放在错误的文件夹中。路径错误。
【参考方案1】:
您是否尝试将图片放在您的 html 文件所在的位置?
【讨论】:
这很好用。很抱歉浪费您的时间,因为我将图像复制到错误的位置。我想我已将图像和 html 放在同一个文件夹中,但我将图像放在另一个文件夹中,所以我不好检查。对不起。以上是关于包含 javascript 的图像不会出现在 webView 中的主要内容,如果未能解决你的问题,请参考以下文章