我正在使用嵌入在应用程序中的帮助系统。
帮助的重要部分尝试使用相同的document.domain值,但子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或其脚本之前加载它吗?
如果您有任何疑问,请告诉我,并且一如既往地感谢!
答案 0 :(得分:2)
您可以做的一件事是在脚本加载后设置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"
});
答案 1 :(得分:1)
不确定您是否需要此类解决方案。但是为此目的使用javascript或jquery可能是一种解决方法。
<iframe id="frame" src="">
</iframe>
您只需在加载父内容javascript后触发iFrame加载...
$("#frame").prop("src", "http://iframe-url.com/");
答案 2 :(得分:0)
尝试创建一个单独的页面,其中包含iframe的内容并且喜欢它,它可能会稍微慢一些,但会按顺序加载。