2015-11-08 3 views
0

Я загружаю html webside из url в webview ... И у меня есть Seekbar ... При изменении он должен увеличиваться или уменьшаться. Это fontSize ... Но я не мог преуспеть ... Кроме того, цвет текста и цвета фона также не сработал ... В дополнение к этому сменяется текст тела ...Webview JavaScript fontSize, цвет, backgroundColor не работает

Что я наделал?

Код, который не работал

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 после SeekBar изменилось.

Итак, я понимаю, нагруженный интернет URL в WebView, чтобы загрузить Javascript работы, но эффекты стиля является not.I был мышления загружен URL дочерних элементов переопределения родителя так сделал это

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

, не работал а также

Что может быть проблемой ??

Update

После @tiny солнечного света говорит испытание на рабочий стол хром, я думал, дочерние элементы переопределения проблему

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

работы на настольном хромом. но в андроиде он имеет различную синтаксическую причину строкового литерала и не работал.

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

getSetting() enabejavascript (истина) –

+0

плз прочитано тщательно я сказал loadUrl ("JavaScript: (document.body.innerHTML = 'тест');"). работает, поэтому это означает, что я включил javascript ..... !!! getSettings() setJavaScriptEnabled (истина). – Beyaz

+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()); 
Смежные вопросы