【问题标题】:Remove inline width attribute from HTML String in Java从 Java 中的 HTML 字符串中删除内联宽度属性
【发布时间】:2014-03-27 00:56:32
【问题描述】:

我有点卡住了。在我目前正在开发的 Android 应用程序中,我通过 Wordpress REST API 下载了 Wordpress 页面的 HTML 内容,以将其显示在 WebView 中。到目前为止,一切都很好。问题是,在内容中,图像的格式有点像这样:

<div id="attachment_5471" style="width: 685px" class="wp-caption aligncenter">
   <img class="size-full wp-image-5471" alt="alt-text" src="http://link-to-image.png" title="image-title-text" data-recalc-dims="1" />
</div>

包含图像的 div 的固定宽度导致我的图像无法调整大小。我使用jquery.imagefit 在我的应用程序中本地调整图像大小以适应设备屏幕。

我解决问题的想法是从所有包含图像的 div 中删除 style=width:"*" 。我相信使用 Jsoup 应该是可能的,但是到目前为止我无法做到,所以我来这里寻求帮助。

另外,这甚至是一个好方法,还是有更清洁的解决方案?

请注意,并非所有图像和页面的 div id 都相同。另外,请注意我不能使用

WebSettings settings = webview.getSettings();
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);

因为它使文本变小了。

如果有任何提示可以让我解决这个问题,我将不胜感激。

【问题讨论】:

  • 如果您可以从所有标签中删除所有style=width:"*" 属性(即,不仅是包含图像的div),那么您可以使用正则表达式将它们删除。

标签: android jquery html webview


【解决方案1】:

使用 jQuery 删除所有内联样式:

$('div').has('img').attr('style', '');

Demo Before the jQuery

Demo After the jQuery

【讨论】:

    【解决方案2】:

    如果您想要在 WebView 中处理此问题,您可以通过覆盖 WebViewClient.onPageFinished() 来实现:

    @Override
    public void onPageFinished(WebView view, String url) {
       String js = " .... "; // Here you can write your JavaScript to remove the style=width:"*"
       view.loadUrl("javascript:" + js);
    }
    

    就像@zsaat14 说的,你可以使用jQuery来实现:

    String js = "$('div').has('img').attr('style', '')";
    

    或者:

    String js = "$('div').has('img').css('width', '')";
    

    【讨论】:

      猜你喜欢
      • 2021-11-01
      • 2019-04-19
      • 2015-04-01
      • 2012-07-03
      • 1970-01-01
      • 2018-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多