gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:02:56 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com