iframe自适应高度解决方案

本文介绍如何使父页面中的iframe根据子页面内容高度自适应调整。提供了同域名及跨域场景下的解决方案,包括必要的JavaScript代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经常会有父页面需要通过iframe嵌入另一个子页面,又要适时根据子页面的高度调整父页面中iframe的高度,这就要求 页面必须具有自适应功能。自适应思想比较简单:就是父页面中iframe高度必须要适时根据子页面 高度进行调整。 由于涉及到js操作,因此对于不同域名的自适应解决方案有所不同,主要是在解决跨域问题。

  • 对于同父级域名下的自适应高度:jipiao.taobao.com/index.htm 页面中嵌入jiudian.taobao.com/xxx.htm页面

1.0 http://jipiao.taobao.com/index.htm中关键代码


<iframe id="J_selfAdapting" src="http://jiudian.taobao.com/xxx.htm" mce_src="http://jiudian.taobao.com/xxx.htm" frameborder="0" scrolling="no" style="height:0;"></iframe>
页面增加如下JS:
<mce:script type="text/javascript"><!-- (function(){ /** * 获取当前域 **/ function _getDomain(){ var _hostname = window.location.hostname.toString(); var _hosts = _hostname.split("."); var _len = _hosts.length; if(_len>2){ return _hosts[_len-2]+"."+_hosts[_len-1]; } return _hostname; } document.domain = _getDomain(); })(); // --></mce:script>

2.子页面http://jiudian.taobao.com/xxx.htm 中嵌入如下代码。即可。

<mce:script type="text/javascript"><!-- (function(){ /** * 获取当前域 **/ function _getDomain(){ var _hostname = window.location.hostname.toString(); var _hosts = _hostname.split("."); var _len = _hosts.length; if(_len>2){ return _hosts[_len-2]+"."+_hosts[_len-1]; } return _hostname; } window.onload = function() { //设置子页面的域 document.domain=_getDomain(); function _setHeight() { if (window.parent != window) { try { //设置父级iframe的高度 parent.document.getElementById("J_selfAdapting").style.height = document.body.scrollHeight+ 'px'; } catch(e) { } } //每隔2s设置一次,主要为了兼容子页面加载完毕之后高度再变化 setTimeout(_setHeight,2000); } //子页面加载完毕之后调用一次 _setHeight(); } })(); // --></mce:script>

  • 不同父级页面,例如jipiao.taobao.com, www.koubei.com域名完全不一样,解决办法是使用一个代理页面jipiao.taobao.com/proxy.htm jipiao.taobao.com/index.htm页面嵌入 www.koubei.com/xxxx.htm,而xxx.htm需要隐藏嵌入jipiao.taobao.com/proxy.htm做为代理,可以将高度写在后面jipiao.taobao.com/proxy.htm#500,表示500px高度。

1.jipiao.taobao.com/index.htm页面中关键代码:

<iframe id="J_selfAdapting" src="http://www.koubei.com/xxxx.htm" mce_src="http://www.koubei.com/xxxx.htm" frameborder="0" scrolling="no" style="height:0;"></iframe>

增加如下JS:

<mce:script type="text/javascript"><!-- (function(){ /** * 获取当前域 **/ function _getDomain(){ var _hostname = window.location.hostname.toString(); var _hosts = _hostname.split("."); var _len = _hosts.length; if(_len>2){ return _hosts[_len-2]+"."+_hosts[_len-1]; } return _hostname; } document.domain = _getDomain(); })(); // --></mce:script>

2. www.koubei.com/xxxx.htm 中关键代码:

<iframe scrolling="no" frameborder="0" style="display: none;" mce_style="display: none;" src="http://jipiao.taobao.com/proxy.htm#597" mce_src="http://jipiao.taobao.com/proxy.htm#597" id="taobaoIframe"> </iframe>

<mce:script type="text/javascript"><!-- (function(){ var pageHeight = document.body.scrollHeight; document.getElementById('taobaoIframe').src = 'http://jipiao.taobao.com/proxy.htm#' + pageHeight; })(); // --></mce:script>

3.在代理页面jipiao.taobao.com/proxy.htm中所有的代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> </head> <body> <mce:script type="text/javascript"><!-- (function(){ /** * 获取当前域 **/ function _getDomain(){ var _hostname = window.location.hostname.toString(); var _hosts = _hostname.split("."); var _len = _hosts.length; if(_len>2){ return _hosts[_len-2]+"."+_hosts[_len-1]; } return _hostname; } document.domain = _getDomain(); var height = window.location.hash.substring(1); try{ var el = window.top.document.getElementById('J_selfAdapting'); if(el) { el.style.height = height + 'px'; } } catch (e) {} })(); // --></mce:script> </body> </html>

### XUnity.AutoTranslator 和 ReiPatcher 使用指南 #### 下载与安装过程 为了使用 XUnity.AutoTranslator 及其配套工具 ReiPatcher,需先从官方指定位置获取最新版本的压缩包。具体操作如下: 下载 `XUnity.AutoTranslator-ReiPatcher-[VERSION].zip` 文件并将其解压至目标游戏所在的根目录下[^3]。 确保解压后的文件结构中包含名为 `SetupReiPatcherAndAutoTranslator.exe` 的可执行程序,并放置于同一级路径下的合适位置以便后续调用。 #### 设置流程说明 启动上述提到的应用程序——即双击打开 `SetupReiPatcherAndAutoTranslator.exe` ——依据屏幕上的指示逐步完成整个设定环节;期间可能涉及到确认某些选项或是等待自动处理完毕,在此过程中只需遵循界面给出的操作指引即可顺利推进下去[^4]。 当一切准备就绪后,桌面上会自动生成一个新的快捷链接 `[GameExeName] (Patch and Run).lnk` ,通过它来开启经过修改过的客户端可以有效激活翻译功能。 #### 参数调整建议 进入由之前步骤创建出来的 `AutoTranslator` 文件夹内部查看其中存在的 `Config.ini` 配置文档,这里允许用户自行编辑一些核心参数以满足个性化需求。例如更改默认使用的在线翻译服务提供商为百度翻译(`Endpoint=BaiduTranslate`)以及设置源语言(`FromLanguage=ja`)和目的语种(`Language=zh-CN`)。 ```ini ; Config.ini example configuration file for AutoTranslator plugin. [Settings] Endpoint=BaiduTranslate ; Specifies the translation service endpoint to use. Language=zh-CN ; Sets the target language of translations. FromLanguage=ja ; Defines the source language being translated from. ``` #### 解决常见疑问 对于那些已经拥有其他类型的模组或者插件管理系统的人来说,可能会担心两者之间是否存在冲突的情况发生。实际上只要按照既定的方法正确部署就不会有问题存在,因为该方案设计之初就已经充分考虑到了这一点从而实现了良好的共存机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值