【问题标题】:DOM ready in GWT在 GWT 中准备好 DOM
【发布时间】:2011-09-02 15:57:09
【问题描述】:

在 GWT 中是否有类似 jquerys ready() 的东西。我添加了一个 iframe 并会检查 DOM 何时准备就绪。

【问题讨论】:

    标签: gwt domready


    【解决方案1】:

    document.ready() 类似于 GWT 入口点中的 onModuleLoad() 方法。当文档准备好时,它们都会执行。

    【讨论】:

    • 但是我不想开始一个新的应用程序,我只是想看看 iframe 的 dom 是否准备好。
    • 好吧,我假设你的 GWT 代码在 iframe 中(所以它的 onModuleLoad 方法会在它准备好时被调用)。我不确定,只要你不能从 iframe 中运行 javascript,你想做的事情(等到 iframe 准备好)是否可行。至少,我很确定,这不会可靠地工作(也不能使用 jQuery)。 this answer 也有过类似的情况,看来这在 Chrome 上是行不通的。
    • 在JavaScript中应该没问题。我可以获取 iframe 的窗口对象并向其添加事件。见stackoverflow.com/questions/205087/…
    • 你真的应该用 Chrome 来测试一下。当我尝试向 iframe 添加onload 属性时,chrome(与所有其他浏览器相反)总是在加载整个内容之前很久就立即触发事件。 (我让服务器发送内容的速度很慢,所以这很明显。)
    • 它不是关于 onload 事件,而是关于我正在寻找的 domcontentloaded
    【解决方案2】:

    您可以创建一个deferred command 以在浏览器事件循环返回时执行。

    boolean ready=false;
    public void onModuleLoad() {
        Scheduler.get().scheduleDeferred(new ScheduledCommand() {
            @Override
            public void execute() {
                ready=true;
                Window.alert(ready+"");    
            }
        });
        for (int i=0;i<9999;i++){
            RootPanel.get().add(new Label(ready+""));
        }
    }
    

    这个例子在 DOM 中放置了 9999 个标签,然后才警报为真

    【讨论】:

    • 你能解释一下这如何帮助我找出 domready 是否在 iframe 中被触发?
    • 我不认为这个问题是专门关于捕获 domready 事件的。关于您的评论,我认为您可以使用javascript 捕获事件,并在事件触发时使用JSNI 调用 GWT 方法
    • 当然我可以做这个 JSNI,但问题是关于 GWT 中的内置解决方案。
    【解决方案3】:

    并非如此:它不是一个能很好地转化为 Java 的范例。您可能只想包含 jQuery 或 Zepto 并使用其中之一的 ready 函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-06
      • 2019-04-05
      • 2021-08-22
      相关资源
      最近更新 更多