Webview JavaScript fontSize,color,backgroundColor不起作用

时间:2015-11-08 09:38:47

标签: javascript android webview

我正在从网址加载html webside到webview ...而且我有Seekbar ... 在改变它应该增加或减少它的fontSize ...但我不能成功... 此外,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');");

上面的代码在搜索栏改变后改变了整个webview。

所以,我理解加载互联网网址到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阳光说测试桌面铬后,我在想,子元素覆盖问题

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" +
                        "                        });");

1 个答案:

答案 0 :(得分:1)

我通过一招来实现它。

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

            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());