2012-05-15 60 views
2

對不起,我不知道如何更好地描述它。有沒有在PHP中使用<![if!(IE 8)]>的方法?

無論如何,這裏是我目前用於我的網站Cufon的'問題'。這很好。但是,對於Internet Explorer 8,它變得非常慢。爲此我決定用:

<![if !(IE 8)]> 
<script type="text/javascript" src="js/myriad-pro.cufonfonts.js"></script> 
<script type="text/javascript">Cufon.replace('.example1') ('.example2') ('.example3') ('.example4') ('.example5'); 
</script> 
<![endif]> 

這一切的偉大工程,但不是。在腳本中調用Cufon的某些腳本部分,它不起作用,並且Cufon仍然會在IE8中顯示(所有負面結果都來自它)。

一些包括腳本/零件有它下面的代碼:

<?php 
echo "<script language=\"javascript\" type=\"text/javascript\">"; 
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });"; 
echo "</script>"; 
?> 

現在是有可能使相同的語句與PHP腳本(S)內?因此,如果它是除IE8以外的任何瀏覽器,它將加載Cufon,但是如果它是IE8,它不會加載Cufon?

希望有人明白我的意思在這裏,因爲它是有點難以爲我解釋... :(

+0

您將希望PHP檢測USER_AGENT,並且僅在版本不是IE8時才發送與Cufon相關的腳本。嘗試一個現有的PHP瀏覽器版本檢測腳本 - 滾動你自己的保證不會捕捉到一個例外... – Konerak

+0

服務器端不是瀏覽器。只需回顯所有資源並使用[功能檢測](http://www.html5rocks.com/en/tutorials/detection/index.html)查找IE並運行它。 – Joseph

回答

5
<?php 
echo "<![if !(IE 8)]>"; 
echo "<script language=\"javascript\" type=\"text/javascript\">"; 
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });"; 
echo "</script>"; 
echo "<![endif]>"; 
?> 

是嗎?還是我誤解了你的要求?

編輯: 另一種方式,因爲我看到你使用jQuery,可以使用jQuery browser detection

<?php 
echo "<script language=\"javascript\" type=\"text/javascript\">"; 
echo "if ($.browser.msie && $.browser.version <= 8) {"; 
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });"; 
echo "}"; 
echo "</script>"; 
?> 

請注意,此功能已被棄用:

這財產立即可用。因此使用它來確定是否調用$(document).ready()是安全的。 $ .browser屬性在jQuery 1.3中不推薦使用,並且其功能可能會在將來的jQuery版本中移至團隊支持的插件中。

如果你確切地知道需要什麼樣的功能,而不是在IE8中實現我會建議使用$.support這是爲特徵檢測,而不是瀏覽器檢測。

+0

謝謝...但是,這會工作嗎?我也想到了,但我懷疑它會起作用嗎?我可能錯了,雖然... – Joanne

+0

如果使用它,表單不再工作...:S – Joanne

+0

那麼它不應該打破你的形式。 PHP在服務器端執行,Apache或任何您使用的Web服務器將HTML結果提供給客戶端。如果它直接放在HTML頁面中,它應該可以工作,當你用PHP回顯它時,我只是添加了最後一個';'我忘記了,不知道是否在嘗試之前把它放回去了。 –

0

基本上,你可以通過過濾客人的用戶代理[docs]做到這一點,你可以從得到這個。服務器變量

$ua = $_SERVER['HTTP_USER_AGENT']; 

用戶代理包含是誰打開的頁面客人的所有必要的信息,這種技術我知道到目前爲止的最簡單的用法是:

if (preg_match('~MSIE|Internet Explorer~i', $_SERVER['HTTP_USER_AGENT'])) { 
    //do something 
} 
0

只需打印條件註釋;

<?php 
echo "<![if !(IE 8)]>"; 
echo "<script language=\"javascript\" type=\"text/javascript\">"; 
echo "$(document).ready(function() { Cufon.replace('.orderpart1') ('.orderpart2') ('.orderpart3'); });"; 
echo "</script>"; 
echo "<![endif]>"; 
?> 
+0

如果我使用它,表單不再有效... – Joanne

2

在PHP中,您可以使用get_browser()來檢測瀏覽器及其版本。

$browser = get_browser(null, true); 

這應該返回包含瀏覽器信息的數組。

請注意,這將需要browscap設置。

+0

[get_browser()](http://php.net/manual/en/function.get-browser.php)的+1。我沒有意識到這一點。 –

+0

get_browser()唯一的問題是,如果你想廣泛使用它,你必須保持一個ini文件的最新版本[(見本註釋)](http://php.net/manual/en/function不用彷徨,browser.php#refsect1-function.get瀏覽器,筆記) –

相關問題