使用javascript“冻结”iframe?

时间:2016-02-01 23:21:42

标签: javascript html css iframe

我有一个Web应用程序,其上有一些iframe,其中一些在任何给定时间都隐藏在视图之外。用户可以选择页面上的控件可以看到哪些iframe。

现在,我通过将“未选中的”iframe的样式设置设置为display: none来完成此操作,这实现了我想要的目标,但我希望从中获得额外的好处 - 这些iframe让Javascript在其中运行。当它们不可见时,使用计算机资源让Javascript运行没有任何好处。

有什么方法可以“冻结”iframe,即暂停JS执行?我的谷歌搜索还没有发现任何东西,所以我不期待它,但如果有这样的方式,那将是一场不错的表现。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以对常见事件使用event.preventDefault():

<script type="text/javascript">
  document.getElementById("iframe").onclick = function(event) {
    return false;
  };
</script>

据我所知,您无法捕获iFrame中的事件,但您可以将其包含在iframe的html中。

<script type="text/javascript">
  // don't forget all the other events you would like to stop
  toStop = ["click", "mousemove", "keypress"]
  for(var i = 0; i < toStop.length; i++) {
    iframe = document.getElementById("your-target-iframe");
    iframe.addEventListener(toStop[i], function(event) {
      return false;
    }, false);
  }
</script>

在jQuery中:

<script type="text/javascript">
  // don't forget all the other events you would like to stop
  jQuery(document).ready(function() {
    $.each(["click", "mousemove", "keypress"], function(index, eventToStop) {
      $("#your-target-iframe").on(eventToStop, function(event) {
        event.preventDefault();
      });
    });
  });
</script>

注意:这些是&#34; hacky&#34;解决此问题的方法,请注意您的Google搜索是正确的,并且没有标准的方法可以执行此操作。