在页面或DIV元素中加载另一页HTML

时间:2013-08-21 11:10:48

标签: jquery html css html5 iframe

好的我想要的是在主页面内加载HTML页面并在主页面DIV中显示它的内容。 我知道IFRAME可以做到这一点,但寻找任何其他可能的解决方案。有一些问题 使用新版本的Firefox加载IFRAMES。内容未显示,一些用户报告问题。

那么其他选项是什么? IFRAMES的好处是可以单独加载其他页面。 因此,即使在IFRAME中加载的其他网站包含相同的CSS类等,也会显示所有内容 应该如此。那么IFRAMES有什么好的替代品吗?

我不是JQuery专家,但我找到了这个选项:

$("#target_div").load("other_page.html");

看起来不错,但如果两个页面(parent和other_page.html)包含相同的CSS类,选择器等,那么在我的情况下,来自“other_page.html”的CSS正在生效。任何可能的解决方案(IFRAME旁边)?

基本上我想将other_page.html HTML内容显示到父页面div中,而不会在两个页面(parent和other_page)上引起CSS和其他内容的问题。

感谢您的建议!

3 个答案:

答案 0 :(得分:1)

tl; dr :不。


为了导入另一个文档,不用将父文档中的CSS应用到子文档,反之亦然,没有比iframe更好的了。

如果您使用jQuery的loadpage fragment - $("#target_div").load("other_page.html #some_id"); - 那么您可以避免将子页面的CSS应用于父页面(除非有<style>个元素在一个无效的地方) - 但这完全消除了子页面的CSS(样式属性除外)并且不会阻止父页面的CSS应用于页面。

使用<object data="foo.html"></object>会产生与iframe类似的效果,但浏览器支持较弱且JavaScript API不一致。

使用完整帧将具有与iframe类似的效果,但需要仅包含帧的顶级框架集文档。 HTML 5不支持框架。

答案 1 :(得分:0)

您需要从other_page.html中删除与基页冲突的css类。

最佳做法是不要为ajax页面应用css类(other_page.html是你的ajax页面,因为你通过jquery load方法得到它的内容)只获取页面内容。并在主页上编写Ajax内容所需的类。

这将解决您的问题

答案 2 :(得分:0)

你应该使用儿童组合器指定你的CSS:

body > div {…} /* affects only the div directly below the body tag */
body #target_div > div {…} /* affects the loaded content */