从Java中的HTML字符串中删除内联宽度属性

时间:2014-03-27 00:56:33

标签: android jquery html webview

我有点卡住了。在我目前正在处理的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在我的应用中本地调整图像大小以适应设备屏幕。

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

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

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

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

因为它使文字很小。

我很感激能够解决这个问题的任何提示。

2 个答案:

答案 0 :(得分:1)

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

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

<强> Demo Before the jQuery

<强> Demo After the jQuery

答案 1 :(得分:0)

如果您想要在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', '')";