iFrame - 我如何过滤掉网页的顶部?

时间:2012-10-28 19:15:32

标签: html css iframe positioning

如何过滤iFrame中出现的信息?

目前我的iframe atm中出现了什么;

http://i.stack.imgur.com/tBvAS.jpg

但我想过滤它;

http://i.stack.imgur.com/dqpUB.jpg

2 个答案:

答案 0 :(得分:5)

如果域名不同,您无法对iFrame内容执行任何操作,因为您可以看到here以及许多相关问题。虽然这些通常以使用Javascript来修改内容为中心,但同样的限制适用于CSS。

如果它们位于同一个域中,您可以使用answers like this使用Javascript执行此操作。

如果它不在您的域名中,您可以选择一些解决方案。第一个只是HTMLCSS,如果iFrame位于页面顶部,则工作,或者如果您隐藏iFrame的顶部位于另一个元素后面,像图片一样:您可以使用否定marginoverflow: hidden;来隐藏滚动条。请查看JSFiddle here

HTML:

<iframe src="http://sbc.swarthmore.edu" scrolling="no">​

CSS:

iframe {
    width: 600px;
    height: 500px;
    overflow: hidden;
    margin-top: -50px;
}​

虽然scrolling="no"属性不是HTML5 - 有效,但据我所知,有必要摆脱Chrome中的限制。

第二个解决方案涉及在内部加载外部页面,然后指向该页面。这使您可以完全控制正在加载的页面的内容和样式。您可以使用多种语言执行此操作,但我会发布您使用PHP进行操作的方式。

首先,将您的iFrame指向您域中的某个页面,然后放置内容。

<iframe src="local-content.php" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>

然后在local-content.php中,您首先将目标HTML文件加载到DOMDocument

$dom = new DOMDocument;
$dom->loadHTMLfile("http://www.external-site.com/the-page.html");

然后使用PHP DOM functions修改所需内容。一个例子是向它添加一个样式表:

$our_css_url = "static/css/style.css";
$element = $dom->createElement('link');
$element->setAttribute('type', 'text/css');
$element->setAttribute('rel', 'stylesheet');
$element->setAttribute('href', $our_css_url);

将其添加到您网页的head

$head = $dom->getElementsByTagName('head')->item(0);
$head->appendChild($element);

然后,当然,你输出整个东西:

echo $dom->saveHTML();

答案 1 :(得分:0)

我不认为你可以访问<iframe>内的内容,这是一种画布或者src url将呈现的webview。您无法过滤或修改外部源呈现的内容。