使用 ajax 在 IFRAME 中加载页面

Posted

技术标签:

【中文标题】使用 ajax 在 IFRAME 中加载页面【英文标题】:Load the page inside of IFRAME using ajax 【发布时间】:2015-03-31 22:37:29 【问题描述】:

如何使用 IFRAME 加载您的页面?我在想这是否可能..

例如,我在下面有这个 iframe。

<iframe id="iframe"   src="http://www.sample.com"></iframe>

我希望 www.sample.com 页面在此 iframe 中加载,而不是简单地将 URL 添加到 src 属性中,而是获取当前页面数据使用 ajax 并使用 IFRAME 标签加载。我正在考虑这个问题,因为我大部分时间在 IFRAME 缓存上都有一个大问题。

我也尝试过这个东西,但它对我来说并不完美。

<iframe id="iframe"   src="http://www.sample.com?random=1422841682605""></iframe>

random 每次加载此 iframe 时都会发生变化。

我想将它应用到我的响应式工具上,如下图所示。如果您需要实际视图click here

谢谢大家,如果有什么想法。

【问题讨论】:

如果 www.sample.com 与您的 iframe 页面不是同一个域,则不能只使用 AJAX。 谢谢sideroxylon..但是有没有办法防止iframe cahce?你有什么想法吗? 【参考方案1】:

您仍然可以使用 src,但提供如下数据 URL:

src = 'data:text/html;charset=utf-8,' + 
    encodeURIComponent( // Escape for URL formatting
        '<!DOCTYPE html>'+
        '<html lang="en">'+
        '<body><h1>Another document!</h1></body>'+
        '</html>'
    );

【讨论】:

谢谢先生..但我对这段代码感到困惑。你能给我更多提示,以便我可以在我的代码中应用它吗? 通过使用ajax,您可以请求您需要显示的页面的html。当您收到该页面的 html 时,只需执行以下操作:src = 'data:text/html;charset=utf-8,' + encodeURIComponent( thatHtml ); 先生,请查看我上面更新的问题,以获取更多示例。您的任何帮助将不胜感激。【参考方案2】:

您可以通过几种不同的方法使用 javascript 更改 iframe 的位置。

var frame = document.getElementById("iframe");
frame.src = "http://www.sample.com";
frame.contentWindow.location = "http://www.sample.com";
frame.contentWindow.open("http://www.sample.com");

当然,您必须非常小心使用 iframe。如果 iframe 指向外部域(即:“Cross-Origin”,即:与托管主网页的域不同),您将违反浏览器安全策略,并且如果您尝试操纵/阅读许多内容,则会引发错误属性。

另请注意,通过更改 iframe 元素的 src 属性,iframe 将自动移动到新位置。但是,如果您使用我建议的其他两种方法之一,则 iframe 元素的 src 属性不会更改(即使 iframe 的内容指向新位置)。

如果需要获取iframe的位置,可以试试:

iframe.contentWindow.location.href;

同样,如果 iframe 指向的站点不在同一个域中,则会导致错误。为了安全起见,请使用try catch (e) 块。

【讨论】:

我尝试使用您的代码,但我找不到它在我的最终工作。我在上面更新了我的问题,希望这对你和我都有帮助。 不使用 AJAX【参考方案3】:

请务必在链接前使用“http://”,例如:

<iframe src="http://www.google.com"></iframe>

【讨论】:

对不起,我忘记在我的代码中添加 http:// 但我已经在我的 iframe src 上。【参考方案4】:

如果www.sample.com 在同一个域中,您可以这样做:

<div id = "targetDiv"></div>
<script>
$('document').ready(function() 
    $('#targetDiv').load('www.sample.com');
);
</script>

不过,如果是同一个域,您可能会使用.load('/');

【讨论】:

不,先生..两者的域名不同。 那么 AJAX 不是你的朋友。 不使用 iframe

以上是关于使用 ajax 在 IFRAME 中加载页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 ajax 在 iframe 中加载内容

不要同时在 Owl Carousel 中加载所有 iFrame

Javascript iframe 未在引导弹出窗口中加载(模式)

如何通过 AJAX 在 div 中加载 iFrame

在https页面的iframe中加载http页面

图像在 iframe 中加载后未从缓存中加载