Ich möchte in der Lage sein, einige Verarbeitung auf dem HTML-und JavaScript einer Seite zu tun, bevor es dem Benutzer meiner App vorgestellt wird. Die Seite verwendet window.open für alle Links und das öffnet ein neues Browserfenster, das nicht von meiner App gesteuert wird, was die Illusion der Verwendung einer App zerstört. Dies ist, was ich gerade habe, was meiner Meinung nach größtenteils funktionieren wird.Execute-Methode in JavascriptInterface nach dem Laden der Seite
class LinkFixer
{
static HashMap<String,String>pages = new HashMap<String,String>();//static so multiple pages can access it
public void processPage(String html)
{
html = html.replace("window.open","LinkFixer.openInNewTab");
}
public void openInNewTab(String url, String targetName)
{
if(!pages.containsKey(targetName))//targetName is unique for every link
{
pages.put(targetName,url);
//add new tab to my TabHost, which will contain a WebView with page from url loaded
}
//move user to tab
}
}
WebView browser = (WebView)findViewById(R.id.browser);
browser.getSettings().setJavaScriptEnabled(true);
browser.addJavascriptInterface(new LinkFixer(), "LinkFixer");
browser.loadUrl("http://serverIP:port/mobilecontrol.html");
//something to make the browser execute LinkFixer.processPage goes here
Das Problem habe ich mit ihm werde, ist, dass ich nicht sicher bin, wie ich die Seite ausführen LinkFixer.processPage machen, wenn die Seite fertig geladen. Ansonsten denke ich, dass der Code funktioniert. Irgendwelche Vorschläge?