簡體   English   中英

php包含條件注釋

[英]php include with conditional comments

我在自己的網站上包含了一些jQuery腳本。 該腳本不適用於低於IE7的任何版本。 現在,我要執行以下操作:

<!--[if !(lt IE 7]>
    <?php include 'script.html'; ?>
<![endif]-->

如果瀏覽器“不低於IE7”,則僅應加載腳本。 但這是行不通的。

沒有使用基於PHP的瀏覽器識別就可以解決此問題嗎?

是的,將瀏覽器識別功能內置到您的jQuery / javascript中。 在javascript中,測試您需要的功能對象 ,如果不存在,請使用代碼進行處理。

可能是開頭(沒有關閉)嗎?

幫助第一部分:它不起作用,因為您不需要(lte之前,也不需要!

<!--[if gte IE 7]>
  <?php include 'script.html'; ?>
<![endif]-->

進一步閱讀: Microsoft有關IE條件注釋的頁面

另一種選擇是使用眾所周知的ie7.js腳本,該腳本使較舊的IE版本更符合“標准”要求,這肯定會使jQuery腳本正常工作。

你可以在這里找到

您不應該使用瀏覽器檢測。 而是使用功能檢測來測試您的瀏覽器是否能夠執行您想做的事情

在PHP中,您可以執行以下操作之一

$browser = get_browser(null, true);
if($browser['browser'] == 'MSIE' && $browser['version'] >= 7) { /*CODE*/

要么

$u_agent = $_SERVER['HTTP_USER_AGENT']; 
$bname = 'Unknown';
$version= "";

if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent)) 
{ 
    $bname = 'Internet Explorer'; 
} 

// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
    // we have no matching number just continue
}

IE條件語句僅在頁面發送到瀏覽器后才起作用,因此PHP包含文件將不起作用,要包含JS腳本文件,您將使用

<!--[if !(lt IE 7]>
<script src='script.js' type='text/javascript'></script>
<![endif]-->

對於javascript瀏覽器檢測,您可以使用:

if(BrowserDetect.browser == "MSIE" && BrowserDetect.version >= '7') {
   /* CODE */
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM