我正在尝试向当前加载的 html 添加一些新内容(在 webview
中),这不是问题所在,我可以通过 javascript
向主体添加新标签,假设这样:
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
接口(interface),如下所示:
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
最佳答案
好的,我通过document.ready
解决了它
loadUrl(html);
loadUrl("javascript:(function() { if(document.readyState === \"complete\") { webviewScriptAPI.onLoad(); }; })()");
关于javascript - 当新内容添加到当前页面时使用 addJavascriptInterface 触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22283193/