Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在加载iframe之前运行脚本_Javascript_Html_Iframe_Asynchronous - Fatal编程技术网

Javascript 在加载iframe之前运行脚本

Javascript 在加载iframe之前运行脚本,javascript,html,iframe,asynchronous,Javascript,Html,Iframe,Asynchronous,我正在使用一个嵌入在应用程序中的帮助系统 帮助的重要部分尝试使用相同的document.domain值,但子iframe似乎比父iframe先运行其document.domain设置。这是一个问题,因为它会引发安全错误并停止javascript执行。下面是html的基本外观,给出正确的想法: <html> <head> <!--Occasionally runs second--> <script src="cha

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

帮助的重要部分尝试使用相同的document.domain值,但子iframe似乎比父iframe先运行其document.domain设置。这是一个问题,因为它会引发安全错误并停止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>

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

虽然我没有将此作为解决方案实现,但我在其他地方使用了类似的机制。这是最完整的答案。非常感谢。
 $("#frame").prop("src", "http://iframe-url.com/");