在 iframe 中重定向服务器端加载
redirect server side loading inside iframe
我有一个iframe。单击iframe内的特定链接时,会发生错误验证,服务器端,随后从服务器端进行重定向。现在,重定向会导致页面在 iframe 内加载。有没有办法在父页面上进行重定向?我知道如果是客户端验证,这是可以做到的。但这是服务器端验证,重定向命令从服务器发生。在重定向中,我还加载了一个错误属性,该属性显示为错误div。即使这样也会加载到 iframe 中。(带有错误div 的 iframe 中的 iframe)。
这是@mavrosxristoforos在注释中提到的代码。代替 PHP 的header()
或您可能正在使用的任何重定向。
<script type="text/javascript">
window.parent.location.href= "http://your-redirect-url-here";
</script>
如果您不想更改服务器的输出,但正在寻找快速而肮脏的解决方案,则可以执行以下操作:
请参阅:iFrame src 更改事件检测?
您可以检查您重定向到的页面的位置(如果这很重要),并且当 IFRAME 第二次更改位置时(因为第一次是 IFRAME 最初加载时),您可以将主窗口重定向到感兴趣的页面。
(我想我们也可以问一个问题:为什么使用 IFRAME 而不是使用 Ajax 请求来验证输入?
只有当主窗口和 iframe 使用相同的协议时,您才能在它们之间进行通信!
这样做的"正确"方法是使用postMessage。您可以在此处和此处找到两个使用示例。这么久才找到正确的方法。
快速和肮脏:
在下面的示例中,外部窗口有一个名为 change() 的 JS 函数,每次重新加载 iframe 时都会调用该函数。您可以使用它来检测仅在发生错误时显示的div,然后重定向。下面的示例重定向到 ycombinator 网站。你可以在这里查看
<html>
<head>
<script type="text/javascript">
function change(obj){
var iframe = document.getElementById('iFrm');
var innerDoc = iframe.contentDocument || iframe.contentWindow.document;
var obj = innerDoc.getElementById('completed');
if(obj !== undefined && obj !== null){
window.location = "https://news.ycombinator.com/";
}
}
</script>
</head>
<body>
<div class="keuzeDiv">
<iframe id="iFrm" src="https://sandbox.plimus.com/jsp/buynow.jsp?contractId=2138644" onLoad="change();" width="100%" height="100%"></iframe>
</div>
</body>
</html>
假设 A 是您的父页面,B 是框架内的子页面。
在服务器验证失败时,不要重定向到页面 A,而是重定向到 B 或错误页面 C!
我想这更像是一个黑客,如果你能够进行哈希更改
- 当服务器验证失败时,重定向到页面 B,并在 URL 的末尾添加/#notvalid
- 侦听父页面 A 中携带 B 的 iframe 的加载事件,并检查 iframe 的 src 末尾是否有"#notvalid"。 如果是,请在父页面中显示错误div!
- 从要使用Protractor测试的服务器异步加载的动态数据列表的列表
- 在服务器上加载资源失败
- 任何人都可以帮助我如何在客户端加载XML,该XML在服务器上,我需要对文件进行更改
- 在 Angularjs 中浏览器页面的客户端加载中存储参考数据
- 从服务器和/或客户端加载动态元素的典型技术是什么
- 将数据从服务器端加载到 ExtJs 网格中
- 用C#将在线flash客户端加载到windows窗体中
- 如何在注销后从服务器重新加载angular应用程序,而不使用浏览器缓存
- XMLHttpRequest 无法在 Ionic 登录到 odoo 服务器时加载 http://localhost:80
- AJAX 从 PHP 后端加载的菜单
- 在页面等待服务器时加载 CSS 和 JS
- 如何全局解析依赖项(从服务器预加载当前用户)
- 使用 Ember.js 从 Laravel 后端加载 Mysql 数据
- 使用 AJAX 或服务器端加载映像
- Javascript在本地加载,但不在服务器上加载
- 在客户端加载本机插件
- 将文本区域的内容保存到文件并从PHP服务器页面加载
- 在 iframe 中重定向服务器端加载
- 网站预览-使用javascript或服务器端加载网页
- 设置从服务器端加载的后退按钮上的下拉值