<html>
<script language="javascript"> 
function resizeMe() {
var x = datalist.offsetWidth;
var y = datalist.offsetHeight;
self.resizeBy(x - document.body.clientWidth + 30,y - document.body.clientHeight + 30);
}
</script>        <body onload="resizeMe()"> 
<div id="datalist" style="background-color:blue;width:100px;height:200px;"></div>
</body>
</html>

解决方案 »

  1.   

    window.dialogWidth
    window.dialogHeight
      

  2.   

    提供一个思路,并且相关代码实现;
    思路: 等到 datalist 绘制完毕(一个事件的触发,然后由相关的监听器监听然后处理), 我们就来调整 dialog 的大小.test.htm:<script> 
    function smdWin(){ 
    win=window.showModelessDialog("demo.htm",window,"dialogWidth=200px;dialogHeight=200px;status=0;scroll=no") 

    </script> 
    <button onclick="smdWin()">打开模式窗口</button> 
    <input id="oInput"> 
    demo.htm:<body><input id="sInput"> 
    <button onClick="dialogArguments.oInput.value=sInput.value">传递文字</button> <script>
    window.onload = function() {
        // 我认为这是 datalist 绘制完毕的事件,具体的事件的由你自己的情况定义。

    // 这是 我们的到的 dialog 对象!
    var obj = dialogArguments["win"];
    // 我们可以利用 dialog 对象来改变它的 宽,高 等属性
    obj.dialogWidth = 500;
    }
    </script></body>我们模拟事件的监听完成放置在   dialog 包含的页面(这里是 demo.htm) 的 window 的 load 事件中,
    那么在这个事件中,主要是要得到 dialog 的句柄,我们通过 
    var obj = dialogArguments["win"];
    可以得到,这样就可以调整 dialog 的大小了。
      

  3.   

    function MM_resize() { 
    try{
    var _left = window.dialogWidth;
    _left = _left.substr(0,_left.length-2);
    var _top = window.dialogHeight;
    _top = _top.substr(0,_top.length-2); 
    if(_left==<%=width%>&&_top==<%=height%>) return; 
    _left = (_left - <%=width%>)/2 ;
    _top = (_top - <%=height%> -25)/2; 
    window.dialogWidth = "<%=width%>px";
    window.dialogHeight = "<%=(height+30)%>px";
    var temp = window.dialogLeft;
    temp = temp.substr(0,temp.length-2)/1;
    window.dialogLeft = temp +_left; 
    temp = window.dialogTop;
    temp = temp.substr(0,temp.length-2)/1;
    window.dialogTop = temp +_top;
    }
    catch(err) {}

    }