Xamarin webview调用LoadFinished多次

Xamarin webview调用LoadFinished多次,xamarin,webview,Xamarin,Webview,尝试在webview完全完成后执行C#代码。这似乎是常识,但我找不到可靠的方法来做到这一点 到目前为止,我所尝试的: 在我的平台级代码中,我有一个WebViewRenderer,带有一个LoadFinished方法,该方法通过webview.LoadFinished委托调用 void LoadFinished(object sender, EventArgs e) { int contentHeight = 0; string readyStat

尝试在webview完全完成后执行C#代码。这似乎是常识,但我找不到可靠的方法来做到这一点

到目前为止,我所尝试的:

在我的平台级代码中,我有一个WebViewRenderer,带有一个LoadFinished方法,该方法通过webview.LoadFinished委托调用

    void LoadFinished(object sender, EventArgs e)
    {
        int contentHeight = 0;

        string readyState = this.webView.EvaluateJavascript("document.readyState").ToString();
        App.ConsoleWriteLine($"ReadyState: {readyState}");
        ...
在我的控制台中,我看到ReadyState:Interactive和ReadyState:Complete大约4-5次。我的目标是监听readyState是否完整,但它会多次命中

我想我试图将javascript插入我的dom,然后等待
window.onload
启动。但这也会多次开火

window.onload=function(){alert('here');}

“警报”显示4-5次


在javascript或C#中是否有可靠的方法可以让我知道我加载的所有内容何时完成

我认为,当您阅读“document.readyState”时,您正在导致文档发生更改,从而触发这些回调。如果我是对的,你应该去无休止的循环,实际上,除非在某个点上,文件不再被修改。为了测试,请尝试删除这一行:this.webView.evaluateJavaScriptInterest,我将尝试一下。除此之外,我把它放在那里是因为loadfinished也被多次解雇。但这很有趣,我会尝试一下,谢谢。不,这不是原因,因为我不再读它了,而且它仍然多次触发:(它是iOS正确的吗?不幸的是,我的MAC在安装Sierra后刚刚死亡,所以我无法帮助:-(我想当你阅读“document.readyState”时)您正在导致文档发生更改,从而触发这些回调。如果我是对的,您应该会进入无休止的循环,除非在某个时候文档不再被修改。只是为了测试,请尝试删除这一行:this.webView.evaluateJavascriptinterest,我会尝试。除了,我把它放在那里,因为loadfinished也在获取被炒了多次。但这很有趣,我会尝试一下,谢谢。不,这不是原因,因为我不再读它了,它仍然被炒了多次:(这是iOS正确的吗?不幸的是,我的MAC在安装Sierra后刚刚死亡,所以我无法帮助:-(