类似于 document.ready 的事件将用作 Awesomium.Net 中 Bootstrap 问题的解决方法

Events similar to document.ready to be used as workaround for issue with Bootstrap in Awesomium.Net

我要问的有点纠结。我正在与 Awesomium .NET and stumbled across an issue with Bootstrap (see this issue report) 合作。基本上问题是不知何故 Bootstrap 'thinks' window 的宽度很小并且不会对调整大小做出反应(也就是没有响应)。当我在开发控制台上调用 $(document).ready() 时,我意外地意识到 bootstrap 可以正常工作。所以看来我可以使用它作为解决方法,只需再次自己执行 $(document).ready() 即可。我现在的问题是这是否会产生任何不需要的副作用。我可以触发更好的事件吗? (有或没有 jQuery)。

更新:

我意识到我可以在控制台中执行 $(document).ready() 但是

var myFunc= function(){$(document).ready()};
muFunc();

没有效果。将 $(document).ready() 放入 setTimout 也没有效果。只有直接在开发控制台上执行命令才有效果。所以看起来解决方法是无用的。还有其他想法吗?

如果你真的想要一个快速而肮脏的解决方案,你可以把它放在某个地方......

$(document).ready(function(){
  $(document).ready();
});

即当文档正式准备就绪时,再次调用 document.ready。哪个可以写得更好:

$(document).ready( $(document).ready );

这是我认为目前可以解决的问题:

我暂时找到了解决方法。这不是解决此问题的最优雅方法,但它确实有效。 您需要为 Web 视图设置 'load' 侦听器。你可以这样做:

this->m_WebView->set_load_listener(this);

在事件内部 'OnDocumentReady' 您可以执行以下操作以强制页面正确更新和重新对齐:

void YourClassObjectNameHere::OnDocumentReady(Awesomium::WebView* caller, const Awesomium::WebURL& url)
{
    caller->ExecuteJavascript(Awesomium::WSLit("window.scrollTo(0,-1);"), Awesomium::WSLit(""));
}

当页面加载时,它应该会自行修复。这适用于 Awesomium 的最新 C++ 版本。

我遇到了和你一样的问题。 我不知道它是否会对您有所帮助,因为我正在生成自己的 HTML。 我删除了 HTML 元素中的 lang 标签,瞧瞧……它起作用了。 我的意思是:

<html lang="en">

为此:

<html>

如果您正在加载外部页面,您可以尝试做类似的事情

 webbrowser.ExecuteJavascript("$(document).ready(  $('html').removeAttr('lang');   );");

希望对您有所帮助