Как сохранить постоянство CSS в WebView - PullRequest
4 голосов
/ 09 августа 2011

Это код, которому я пытаюсь следовать; onPageFinished (представление WebView, URL-адрес строки), который я использую, чтобы внедрить свой собственный CSS во внешний сайт. К сожалению, с помощью Webview сначала отображается страница, а затем применяется CSS. Как можно подождать, пока страница отрендерится, а затем применить javascript, прежде чем отобразить ее?

Есть ли более простой метод с WebClient HTTP Get и перенаправить CSS на один локально?

Спасибо за ваши предложения заранее!

com.webkitdemo;

import android.app.Activity;
import android.os.Bundle;
import android.os.SystemClock;
import android.view.View;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebKitDemo extends Activity
{
final Activity activity = this;

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
setContentView(R.layout.main);

//addition final webview

final WebView webView = (WebView)findViewById(R.id.web_engine);  
/* JavaScript must be enabled if you want it to work, obviously */  
webView.getSettings().setJavaScriptEnabled(true);  




webView.setWebChromeClient(new WebChromeClient() {
public void onProgressChanged(WebView view, int progress)
{
activity.setTitle(" Loading...");
activity.setProgress(progress * 100);

if(progress == 100)
activity.setTitle(R.string.app_name);
}
});

webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String                       failingUrl)
{
// Handle the error
}

//additions

@Override 
public void onPageFinished(WebView view, String url)  
{  
  webView.loadUrl("javascript:(function() { " +  
      "document.getElementsByTagName('body')[0].style.color = 'green'; " +  
      "})()"); 
}  
//

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
webView.loadUrl(url);
return true;
}



});
webView.loadUrl("http://code.google.com");
}}

1 Ответ

0 голосов
/ 11 июня 2012

Добавьте это перед тем, как ваш стиль меняет код. Таким образом, он будет выполняться только после завершения загрузки страницы.

var oldonload = window.onload;
if (typeof window.onload != 'function')
    {
    window.onload = yourfunctionhere();
    } 
else 
    {
    window.onload = function()
    {
    yourfunctionhere();
    oldonload();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...