我正在尝试向当前加载的html添加一些新内容(在webview
中),这不是问题,我可以通过javascript
向body添加新标记,假设:
loadUrl("javascript:(function() { document.body.innerHTML += '<div id=\"separator\" style=\"height:10px; margin-top:10px; margin-bottom:10px; background-color:#000000;\"></div> <p><font size=24> static page " + pageNumber + "';}())");
它做得很好。
但我想知道新内容何时呈现并向用户显示。(我在下面使用但如果您知道更好的方式请告诉我)。所以我添加了javascript
这样的界面:
addJavascriptInterface(new ObjectExtension(), "webviewScriptAPI");
final class ObjectExtension
{
public void onLoad()
{
Log.i("onLoad", "onLoad get called");
}
}
现在我尝试通过loadUrl("local html address");
当页面加载完全,我想通过javascript添加新内容并在新内容呈现时调用onLoad()
,所以我添加:
loadUrl("javascript:(function() { window.onload = function() { webviewScriptAPI.onLoad(); }; })()");
loadUrl("javascript:(function() { document.body.innerHTML += '<div id=\"separator\" style=\"height:10px; margin-top:10px; margin-bottom:10px; background-color:#000000;\"></div> <p><font size=24> static page " + pageNumber + "';}())"); // pageNumber is an incremental integer
新内容成功添加,但onLoad()
未触发。
我也试过这个,没有成功:
loadUrl("javascript:(function() { window.onresize = function() { webviewScriptAPI.onLoad(); }; })()");
loadUrl("javascript:(function() { document.body.innerHTML += '<div id=\"separator\" style=\"height:10px; margin-top:10px; margin-bottom:10px; background-color:#000000;\"></div> <p><font size=24> static page " + pageNumber + "';}())"); // pageNumber is an incremental integer
答案 0 :(得分:1)
好的,我通过document.ready
loadUrl(html);
loadUrl("javascript:(function() { if(document.readyState === \"complete\") { webviewScriptAPI.onLoad(); }; })()");
答案 1 :(得分:0)
缺少一行:
final class ObjectExtension
{
public void onLoad()
{
Log.i("onLoad", "onLoad get called");
}
}
它应该是:
final class ObjectExtension
{
@JavascriptInterface
public void onLoad()
{
Log.i("onLoad", "onLoad get called");
}
}