2012-11-15 53 views
0

我建立的网站www.verbum.xtrweb.com/verbum.php比其他网页的自己的样式表

我使用请求函数在PHP中获得的从网站西班牙语单词的定义替换样式表:WWW。 rae.es。我得到的输出是在一个,但不幸的是,我不能改变它输出的元素的风格。例如,如果你查看“hola”这个词,你会得到“hola”的含义,但是可以使用www.rae.es的样式表。我想要的是适用于这种输出我自己的风格(颜色,字体,字体大小等)

enter image description here 我现在有一种叫做$重要!但根据我以前测试过的方式,它不起作用。

我以紧迫感唤起了stackoverflow社区的魔力。

+0

这是一个'iframe'!您应该查找(并在此处询问)如何更改iframe的CSS。 – inhan

+0

为什么在有api时使用iframe。 (http://rae-quel.appspot.com/json?query=hola) – 2012-11-15 03:37:49

+0

我该怎么实现api @Dagon,我求你赦免 – j1nma

回答

1

要更改的内容位于iframe中。我建议你只是将样式表注入iframe直接,但不幸的是你想要的内容是在不同的域。由于跨域安全策略,您将无法直接修改iframe的内容。

有两种方法可以解决这个问题。您可以使用PHP应用程序获取您需要的内容,然后您可以以任何您想要的方式对其进行过滤并进行更改。这将取代iframe,而只是在页面上显示您需要的内容。另一种选择是使用更简单的PHP应用程序来获取内容,但根本不会修改它。然后你将你的iframe指向这个PHP应用程序,它将以与现在相同的方式显示,但它将来自同一个域。然后你可以用Javascript注入一个样式表,并以任何你想要的方式。

“重要!”如果你使用我提到的第二种方法,可能需要CSS覆盖,但它不是问题的根本原因。如果你想阅读更多关于如何使用重要!,我建议this article

下面我已经实现了我描述的第一种方法的一个例子。这将下载请求的页面,然后注入一组自定义样式。

<?php 
$url = 'http://lema.rae.es/drae/srv/search?id=IwxflJmT9DXX2DMkYs8Z'; 

$css = <<<EOT 
<style type="text/css"> 
body 
{ 
    background: #eeeeee; 
} 
.a 
{ 
    color: green; 
} 
.f 
{ 
    font-size: 200%; 
} 
.o 
{ 
    font-size: 80%; 
} 
img 
{ 
    opacity: .5; 
} 
img:hover 
{ 
    opacity: 1; 
} 
</style> 
EOT; 

$data = file_get_contents($url); 
$data = str_replace('</head>', $css.'</head>', $data); 
echo $data; 

?> 
+0

感谢@jmack提供了令人惊叹的解释,但您在谈论哪种PHP应用程序?谢谢!!! – j1nma

+0

我正在谈论一个自定义的PHP应用程序,而不是特别的一个。对于我注意到的第二个选项,脚本将更简单。您可以使用略微修改的PHP AJAX代理版本轻松完成此操作。那有意义吗? –

+0

胡安马,我希望你已经找到了解决问题的办法。如果我的回答对你有益,请考虑投票并接受它作为最佳答案。谢谢。 –