2014-04-10 99 views
1

我正试图在div中加载html页面。它运行良好,除了“已加载”页面仅填充父项的一小部分。innerHTML不填充父项

这是加载HTML功能:

function load_inner() { 
    Content.innerHTML='<object type="text/html" data="page_test.html"></object>'; 
} 

DIV待填充为500 * 200像素。

加载的页面是为了填补父,但在这种情况下,内的div设置为1000 * 500像素用于测试目的(父有溢出属性设置为隐藏)。

这是加载内容(一切由HTML标签包围)的页面:

<head> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
    <meta name="generator" content="Geany 1.23.1" /> 
    <style type="text/css"> 
     #Content { width:500px; height:200px; background:orange; overflow:hidden;} 
    </style> 
    <script type="text/javascript"> 
     function load_inner() { 
      Content.innerHTML='<object type="text/html" data="page_test.html"></object>'; 
     } 
    </script> 
</head> 

<body onload="load_inner()"> 
    <div id="Content"></div> 
</body> 

这是一个被加载(一切由HTML标签包围)的页面:

<head> 
<meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
<meta name="generator" content="Geany 1.23.1" /> 
    <style type="text/css"> 
     #Cont { background:yellow; } 
     body { margin:0px; padding:0px; } 
    </style> 
</head> 

<body> 
    <div id="Cont"> 
     <span>IM A TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEST</span> 
    </div> 
</body> 

这是结果:

Bad result

我已经做了一些测试,似乎只有对象标签发生。

该工程确定(内容不是“有限”):

Content.innerHTML='g...g'; 

String set directly

如果我发送一个GET请求到目标页面和的innerHTML设置为“responseText的”它显示正确:

function load_home() {   
    var url = "http://localhost/inner_load/page_test.html"; 
    var method = "GET"; 
    var async = true; 
    var request = new XMLHttpRequest(); 
    request.onload = function() { 
     var data = request.responseText; 
     Content.innerHTML=request.responseText; 
    } 
    request.open(method, url, async); 
    request.send(); 
    } 

Loaded via http request

对象标记有什么问题,以及如何解决此问题?提前致谢!

+0

你试过造型对象标记为100%? – bensonsearch

+0

您不会显示任何HTML中包含''标签的HTML。这让我感到困惑。 – jfriend00

+0

@bensonsearch是的,我做了:'注意:我可以将对象标记设置为父(通过css)的100%w&h,并且它完全填充它,但这些滚动条仍然显示。' – arielnmz

回答

2

如果您将对象的宽度设置为100%,100%反映父div的宽度(橙色)而不是加载的内容 - 因此您要将1000px的div加载到500px(其100%父)对象标签。如果你不想滚动条,你需要将对象的大小设置为与你加载的内容大小相同,即1000px。所以答案是对象标签没有问题。

例如:

<div id="content"> //500px 
    <object> //at 100% it is also 500px 
     <div>Loaded content</div> //this is 1000px and hence the scrollbar on a parent object 
    </object> 
</div> 
+0

好的。为了测试目的,我将它设置为100%。谢谢你指出,我会解决这个问题。问题是我没有指定对象大小和“加载的div”大小。对象标签始终调整为大约150 * 100px,并添加滚动条(如果加载的内容更大)。如果我发送GET请求,并经由了XMLHttpRequest()对象加载页面这不会发生,尽管对象变量没有在后者使用。 – arielnmz

+0

,如果你不使用对象标签(推荐) - 你不会有任何问题。对象实现仍然有点不同从浏览器到浏览器 – Michal

+0

谢谢。我期待更多的见解,但我认为没有太多可以说的。再次感谢! – arielnmz