解决iframe跨越问题时(两个页面的主域相同、二级域名不同或者域名完全不同的两个页面),如果通过打包后在线上调试非常麻烦。可以通过更改host文件,把本地不同的端口映射到不同的虚拟域名,来复现线上的调试环境。但手动改host文件比较麻烦,也可以通过switchhost工具来自动实现。
例如,父页面http://father.com
以iframe的形式引入了子页面http://son.com
,互相获取对方的dom肯定会有跨域的情况,通过postMessage
等方法可以解决,但需要两个页面都做一些修改来调试。
假设本地的父页面路径是127.0.0.1:3333
,映射到http://father.com
<body>
<h1>page1</h1>
<iframe
name="frameSon"
id="frame"
src="http://son.com:4444"
width="300px"
height="300px"
frameborder="1">
</iframe>
</body>
子页面路径是127.0.0.1:4444
,映射到http://son.com
:
<body>
<h1>page2</h1>
</body>
在switchhost中新建一个名为example
的host文件并启动,内容如下:
在浏览器地址栏输入http://father.com:3333/
就可以访问到127.0.0.1:3333
,也就是父页面;输入http://son.com:4444/
就可以访问到127.0.0.1:4444
,也就是子页面: