在iframe加载之前运行脚本

Run script before iframe loads

本文关键字:运行 脚本 iframe 加载      更新时间:2023-09-26

我正在使用一个嵌入在应用程序中的帮助系统。

帮助的重要部分试图拥有相同的文档。域值,但子iframe似乎运行其文档。在父域设置之前设置域。这是一个问题,因为它抛出安全错误并停止javascript执行。下面是html的基本外观,以给出正确的想法:

<html>
    <head>
        <!--Occasionally runs second-->
        <script src="change-document-domain.js"></script>
    </head>
    <body>
        <iframe>
            <html>
                <head>
                    <!--Occasionally runs first-->
                    <script src="change-document-domain.js"></script>
                </head>
            </html>
        </iframe>
    </body>
</html>

帮助非常受构建它的程序的限制。我是否可以对父脚本或父脚本标签进行任何更改,以使其在iframe或其脚本之前加载?

如果你有任何问题,请告诉我,一如既往地感谢!

您可以在脚本加载后设置iFrame的来源。

所以,创建一个函数,将加载脚本页面加载,然后一旦脚本完成,你可以设置一个回调函数,将在脚本完成加载后执行。

function loadScript( url, callback ) {
  var script = document.createElement( "script" )
  script.type = "text/javascript";
  if(script.readyState) {  //IE
    script.onreadystatechange = function() {
      if ( script.readyState === "loaded" || script.readyState === "complete" ) {
        script.onreadystatechange = null;
        callback();
      }
    };
  } else {  //Others
    script.onload = function() {
      callback();
    };
  }
  script.src = url;
  document.getElementsByTagName( "head" )[0].appendChild( script );
}

// call the function...
loadScript('change-document-domain.js', function() {
  //executes after the script is laoded.
  document.getElementById("myFrame").src = "sourceOfIFrame.html"
});

不确定是否需要这种解决方案。但使用javascript或jquery可能是一个解决方案。

<iframe id="frame" src="">
</iframe>

在父内容javascript加载后触发iFrame加载…

 $("#frame").prop("src", "http://iframe-url.com/");

尝试创建一个包含iframe内容的单独页面并喜欢它,这可能会稍微慢一些,但会按顺序加载

基于runcorn的答案(它没有为我做),通过封装在一个函数中添加时间延迟(一秒):

setTimeout(function() { 
$("#frame").prop("src", "http://iframe-url.com/");;
}, 1000);