【问题标题】:Making iFrame loading faster to avoid validation errors使 iFrame 加载更快以避免验证错误
【发布时间】:2015-05-06 18:26:56
【问题描述】:

问题陈述:

我有一个 .NET 用户控件,并且我在其中使用了 iFrame。我在一个页面上有多个该控件(其中包含 iFrame)的实例(可以是任意数量)。每次一个控件状态发生变化时,我都必须加载所有控件。该控件有一些必须填写的字段。

我有一个导航到另一个屏幕的按钮,因为每次我加载所有控件时,都需要花费大量时间才能加载所有控件。用户正在尝试填写所有必填字段并单击下一步按钮,在这种情况下,即使用户完成了所有必填字段,并且控件(带有 iframe)没有完全加载,它也会产生验证错误。

注意:以上所有内容都在 JavaScript 中,而不是服务器端。

我尝试了什么:

  1. 我尝试在加载前显示模态 div,但显然无法捕获确切的加载时间,并且可能会单击下一个按钮。

  2. 我尝试在验证功能上设置超时,但由于加载不明确,它偶尔会起作用。

  3. 我尝试使用计数器查看加载了多少控件来检查控件总数,然后才允许验证功能触发,再次以明确的方式加载,但无济于事。

    李>

我知道这可以通过不同的方式完成,但由于涉及大量的精力和时间,我们必须采用现有的方式,并且必须解决问题。有人可以建议任何指针/解决此问题的方法。

【问题讨论】:

  • iFrame的加载源是同一个域还是不同?
  • 感谢您的评论。所有框架都是从同一个域加载的,每个框架都有一组控件,就像一个表单,并且有必填项。
  • 你是如何实现第三个选项的?
  • 我有一个默认为 0 的计数器,每次将控件添加到页面时(因为控件是动态添加的)我递增计数器,我知道我添加了多少控件。因此,在验证时,我必须检查加载的所有控件是否等于屏幕上添加的所有控件。如果是这样,那么做你的验证,验证会通过,因为一切都很好。我只是想延迟验证。不幸的是我无法控制负载。你有什么建议吗?
  • 就个人而言,这似乎是一个不错的方法(检查 iframe 的数量,并计算已加载的 iframe 数量)。它是如何失败的?您遇到了哪些错误/问题/挑战?

标签: javascript jquery html iframe


【解决方案1】:

我把这个修好了。我认为修复是一种躲闪,但我不知道任何其他方式。

如上所述,我采用了方法 3。有 1 毫秒的超时,并且计数器在该超时期间递增,即

setTimeout(function() {
   counter++;
}, 1);

我的验证代码上多了一个计数器,可以将其延迟 1 毫秒,并检查计数器是否等于所有可用控件的条件,如果不再次验证,直到条件为假。否则继续。

    function validate() {
        if (counter != total number of frames) {
            setTimeout(function() {
                validate();
            }, 1);
            return false;
        }
...
}

感谢大家的投入,帮助很大。希望这将是解决类似问题的最后手段。

【讨论】:

  • 第一个setTimeout在哪里?
  • 抱歉耽搁了,超时是在加载 iframe 时。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-26
  • 2018-08-23
  • 2014-08-02
  • 2015-07-13
  • 1970-01-01
相关资源
最近更新 更多