包含 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 中的主要内容,如果未能解决你的问题,请参考以下文章

包含 Vue.js 后,图像宽度和高度始终为 0 [关闭]

在响应框中制作响应图像而不会导致页面速度出现可见内容问题

为啥我的图像不会显示在 javascript 画布上?

电脑提示损坏的图像,没有被指定在Windows上运行,或者它包含错误。怎么解决?

JavaScript - CSS 元素样式不会改变?

实用开源Javascript库,10大图像处理库推荐