Javascript 创建动态iframe不';不要把它放得很高,然后剪下这一页

Javascript 创建动态iframe不';不要把它放得很高,然后剪下这一页,javascript,html,iframe,Javascript,Html,Iframe,我正在做一个搜索引擎,我的iframe有一些问题。当用户单击enter时,将创建一个iframe。我希望iFrame获得所需的高度,以便与页面的其余部分融为一体。这是我的密码: <input type="search" id="q" name="q"/> <input type="submit" value="Search" onclick="submit(); return false;"/> <script> function submit() {

我正在做一个搜索引擎,我的iframe有一些问题。当用户单击enter时,将创建一个iframe。我希望iFrame获得所需的高度,以便与页面的其余部分融为一体。这是我的密码:

<input type="search" id="q" name="q"/>
<input type="submit" value="Search" onclick="submit(); return false;"/>

<script>
function submit() {
        page.innerHTML = '<iframe id="results" src="" frameborder="0" scrolling="no" style="overflow:hidden; overflow-x:hidden; overflow-y:hidden; height:150%; width:99%; position:absolute;" height="150%" width="99%" onload=""/>';
        document.getElementById('results').src = 'search.php?q=' + query + '&session=<?=$custom_session;?>&no-cache=' + Math.random();
}
</script>

函数提交(){
page.innerHTML='';
document.getElementById('results').src='search.php?q='+query+'&session=&no cache='+Math.random();
}
这是脚本的精简版本。实际页面位于- 如果您查看HTML,您将能够看到整个代码

如果搜索“mobile”,搜索结果将在第9个结果()处被切断,但是如果搜索时说“mail”,它将显示所有内容并在页面列表的一半处停止。

尝试以下方法:

<iframe id="results" src="" onload="autosize('results')"></iframe>

<script>
function autosize(ifrId){
  var ifr = document.getElementById(ifrId);
  var doc = ifr.contentDocument ? ifr.contentDocument : ifr.contentWindow.document;
  var obj = ifr.style ? ifr.style : ifr;
  obj.height = doc.body.scrollHeight + "px";
} 
</script>

函数自动调整大小(ifrId){
var ifr=document.getElementById(ifrId);
var doc=ifr.contentDocument?ifr.contentDocument:ifr.contentWindow.document;
var obj=ifr.style?ifr.style:ifr;
obj.height=doc.body.scrollHeight+“px”;
} 

您可以找到这个问题的答案:问题在哪里?您所关注的示例页面没有显示任何问题。是否有任何理由为此使用iframe?为什么不直接将搜索结果输出到文档中,而不是使用search.php的iframe?因为我不希望页面刷新,而且有几个页面。太棒了。到目前为止效果很好。非常感谢。