1

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

目前在我的 iframe atm 中出现的是;

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

但我想过滤它;

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

?

4

2 回答 2

6

如果域不同,您将无法对 iFrame 内容执行任何操作,如您在此处和许多相关问题中所见。尽管这些通常以使用 Javascript 修改内容为中心,但同样的限制也适用于 CSS。

如果这些在同一个域上,您可以使用 Javascript 使用类似的答案来完成。

如果它不在您的域中,则有一些解决方案供您选择。如果 iFrame 位于页面的最顶部,或者如果您将 iFrame 的顶部隐藏在另一个元素(如图像)后面,则第一个只是HTML并且CSS有效:您可以使用否定和隐藏滚动条。在这里查看JSFiddlemarginoverflow: hidden;

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 函数对其进行任何修改。一个示例是向其添加样式表:

$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();
于 2012-10-28T19:40:22.703 回答
0

我认为您无法访问其中的内容,<iframe>这是一种画布或将呈现 src url 的 web 视图。您不能过滤或修改由外部源呈现的内容。

于 2012-10-28T19:20:16.917 回答