javascript - 当新内容添加到当前页面时使用 addJavascriptInterface 触发

标签 javascript android webview

我正在尝试向当前加载的 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");

加载第一个 html 页面

当页面完全加载后,我想通过 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/

相关文章:

android - 如何使用 webview 在基于 html5 的离线 Android 应用程序中播放 mp4 视频?

javascript - 如何将从数据库中提取的数字传递到 javascript 数据部分?

Javascript DOM : Setting custom DOM element properties

android - 如何在可组合物中使用刀柄注入(inject)单例

javascript - 将 Javascript 数组传递给 UILabel - iOS

javascript - WebView:使 service worker 的 console.log 输出在 logcat 中可见

javascript - Three.js 中的第一人称动画

javascript - 将滚动条移动到页面中间的控制位置

清除 RAM 内存时 Android 应用程序崩溃

java - 如何记录 rxJava2 的所有异常的堆栈跟踪?