【问题标题】:How to execute code in an iframe as soon as the page starts to load (not onloaded!)页面开始加载后如何在 iframe 中执行代码(未加载!)
【发布时间】:2012-10-01 20:31:37
【问题描述】:

我想在渲染开始后立即在 iframe 中执行 javascript 代码,而不是在加载文档时。目的是我想修改在内联脚本块内执行的框架内的 javascript 行为。 onload-event 将在内联脚本之后执行,这为时已晚。 html开始加载后如何执行javascript?

【问题讨论】:

    标签: javascript html iframe onload


    【解决方案1】:

    假设您试图从其他帖子中删除 yahoo iframe 中的 javascript 代码,您无法更改不在您域中的 iframe 内的任何内容。

    【讨论】:

    • 为了方便用户,我只想将 openid 显示在 iframe 中。我不是什么骗子……
    • 对于 OpenID,您与欺诈者无异。如果您可以跨站点脚本进入其登录表单并破坏它,OpenID 怎么能提供任何类型的安全性?
    • 这是真的。我想我必须放弃这种方法。
    【解决方案2】:

    不要将代码放在 onload 中,只需将其放在脚本中即可。例如,而不是

    <script>
      function doStuff(){
        // ...
      }
    </script>
    <!-- snip -->
    <body onload="doStuff();">
    

    你应该这样做:

    <script>
      function doStuff(){
        // ...
      }
      doStuff();
    </script>
    <!-- snip -->
    <body>
    

    【讨论】:

      【解决方案3】:

      您可以将脚本内联,但要非常小心。如果页面未完全加载并且您尝试访问 DOM,则可能会遇到异常。一般来说,我真的不建议您使用内联脚本。最好自己控制执行流程,而不是依赖浏览器的行为。如果可能,最好想办法将内联脚本移动到允许您对调用进行排序的函数中。

      【讨论】:

        【解决方案4】:

        在这种情况下,Onload 对您不起作用。如果这些页面是你自己的,你可以在每个页面的标题中放置一个脚本,检查当前窗口是否是父窗口。如果它不是父窗口,则意味着它是 iframe。如果它是 iframe,则执行代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-30
          • 1970-01-01
          • 2022-09-24
          相关资源
          最近更新 更多