前端 iframe嵌套的页面,可以正常显示,但是页面里面的提交按钮的接口,域名会变成localhost,这种情况应该怎么处理呢?需要将跳接口域名变为嵌套页面的正常的域名
1条回答 默认 最新
关注- 你可以看下这个问题的回答https://ask.csdn.net/questions/1091494
- 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:js 实现iframe + form异步文件提交方案分析
- 除此之外, 这篇博客: javascript —— 父页面监听iframe子页面的自定义事件中的 怎么触发自定义事件 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
触发自定义事件可以通过指定对象来触发,这里通过window来触发,代码如下:
window.dispatchEvent(bEvent);- 以下回答由chatgpt基于相关博客总结生成:
根据问题描述,你在前端中使用了嵌套的iframe标签,并且遇到了一个问题:嵌套页面中的提交按钮导致的接口跳转时,域名会变成localhost。你想知道如何处理这种情况,需要将接口跳转的域名修改为嵌套页面正常的域名。
根据提供的参考资料,我提供以下解决方案:
首先,从参考资料可以看出,通过改变iframe的src属性来实现不同页面的切换。但是这种方式只能刷新整个页面,而不能实现局部刷新。
第一种方法可以通过以下代码实现:
<!DOCTYPE html> <html> <head> <script> function changeSrc(src) { var iframe = document.getElementById("iframe"); iframe.src = src; } </script> </head> <body> <a href="#" onclick="changeSrc('a1.html')">1</a> <a href="#" onclick="changeSrc('a2.html')">2</a> <iframe id="iframe"></iframe> </body> </html>第二种方法通过修改链接的target属性来实现局部刷新:
<!DOCTYPE html> <html> <head> </head> <body> <a href="a1.html" target="iframe">1</a> <a href="a2.html" target="iframe">2</a> <iframe src="" id="iframe"></iframe> </body> </html>以上两种方法都是可以实现局部刷新的,但是这并不能解决你的问题。
根据提供的参考资料,第二段代码展示了父页面和iframe页面的完整代码。在父页面中,通过使用
contentWindow属性获取到了iframe页面的window对象,然后通过在子页面中触发自定义事件来与父页面进行通信。根据这个思路,我们可以在子页面中的接口跳转处,通过触发自定义事件的方式,将跳转的url传递给父页面,让父页面来进行跳转。
具体的实现步骤如下:
- 在子页面中,将接口跳转的url传递给父页面,可以通过以下代码实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <span id="bspan" style="color:red;">我是嵌入的b页面</span> <button onclick="redirectTo('http://example.com/api')">点击跳转</button> </body> <script type="text/javascript"> function redirectTo(url) { var event = new CustomEvent("redirectTo", { detail: { url: url } }); window.parent.postMessage(event, '*'); } </script> </html>- 在父页面中,监听子页面触发的自定义事件,并根据传递的url进行跳转,可以通过以下代码实现:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <h2>嵌入b页面:</h2> <iframe id="b_iframe" src="b.html"></iframe> </body> <script type="text/javascript"> var bWin = document.getElementById("b_iframe").contentWindow; window.addEventListener('message', function(event) { if (event.data.detail && event.data.detail.url) { window.location.href = event.data.detail.url; } }, false); </script> </html>通过以上的代码,当子页面中的按钮被点击时,会触发自定义事件,并将跳转的url传递给父页面,然后父页面进行页面跳转。
请注意,由于涉及到跨域通信,需要确保父页面和子页面的域名是同源的,并在子页面中的跳转按钮上添加
onclick事件来触发redirectTo函数。希望以上解决方案能够帮助到你,如果有任何疑问,请随时提问。
解决 无用评论 打赏 举报