【问题标题】:Webview JavaScript fontSize,color,backgroundColor is not workWebview JavaScript fontSize,color,backgroundColor 不起作用
【发布时间】:2015-11-08 21:15:01
【问题描述】:

我正在将 html 网页从 url 加载到 webview...而且我有 Seekbar... 在更改它应该增加或减少它的字体大小......但我无法成功...... 此外,textColor 和背景颜色也不起作用...除此之外,更改正文文本也起作用...

我做了什么?

无效的代码

loadUrl("javascript:(document.body.style.backgroundColor ='red');"); 
loadUrl("javascript:(document.body.style.fontSize='20pt');");
loadUrl("javascript:(document.body.style.color ='yellow');");

有效的代码

loadUrl("javascript:(document.body.innerHTML ='test');");

在 seekbar 改变后,上面的代码改变了整个 webview。

所以,我知道加载互联网 url 到 webview 以加载 javascript 是可行的,但样式效果不是。我在想加载的 url 子元素会覆盖父元素,所以这样做

loadUrl("javascript:(var elements = document.getElementsByTagName(\"*\");" +
                        "for (var i=0; i < elements.length; i++) \n" +
                        "{    \n" +
                        "    elements[i].style.fontSize ='30rem';\n" +
                        "}" +
                        ");");  

效果不佳

可能有什么问题??

更新

@tiny 阳光说 test on desktop chrome 之后,我在想,子元素覆盖问题

var elements = document.getElementsByTagName("*")
                        for (var i=0; i < elements.length; i++) 
                        {    
                            elements[i].style.fontSize ='20pt'
                        }

在桌面 chrome 上工作。但在android中它有不同的字符串文字语法原因并且不起作用..

   webview.loadUrl("javascript:(var elements = document.getElementsByTagName(\"*\")\n" +
                        "                        for (var i=0; i < elements.length; i++) \n" +
                        "                        {    \n" +
                        "                            elements[i].style.fontSize ='20pt'\n" +
                        "                        });");

【问题讨论】:

  • getSetting().enabejavascript(true)
  • 请仔细阅读我说 loadUrl("javascript:(document.body.innerHTML ='test');");有效,所以这意味着我启用了 javascript .....!!! getSettings().setJavaScriptEnabled(true);
  • 您确定您的代码可以在 chrome 上运行吗?
  • 尝试在 chrome 上测试
  • webview.getSettings().setTextSize() 更改 TextSize。 webview.setBackgroundColor(0) 改变背景。

标签: javascript android webview


【解决方案1】:

我是靠诡计实现的。

oom 很容易,你可以尝试改进它。

            String b = "javascript:alert(document.getElementsByTagName(\"*\")["+0+"].style.backgroundColor=\"yellow\");";
            StringBuilder sb = new StringBuilder(b);
            for(int i = 0;i<100;i++){
                sb.append("alert(document.getElementsByTagName(\"*\")["+i+"].style.backgroundColor=\"yellow\");");
            }
            a.loadUrl(sb.toString());

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 2018-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多