2012-06-27 111 views
0

我想包括一個名爲top.php的php fie到我的javascript代碼中,如果它滿足條件的話。這是檢查瀏覽器版本的代碼。我需要的是檢查瀏覽器名稱,如果它的chrome只需要顯示top.php文件。但是在每個瀏覽器中的代碼中都包含該頁面。如何在一個JavaScript代碼中包含一個php文件(top.php)?

<script type="text/javascript"> 
    var nVer = navigator.appVersion; 
    var nAgt = navigator.userAgent; 
    var browserName = navigator.appName; 
    var fullVersion = ''+parseFloat(navigator.appVersion); 
    var majorVersion = parseInt(navigator.appVersion,10); 
    var nameOffset,verOffset,ix; 

    // In Opera, the true version is after "Opera" or after "Version" 
    if ((verOffset=nAgt.indexOf("Opera"))!=-1) { 
    browserName = "Opera"; 
    fullVersion = nAgt.substring(verOffset+6); 
    if ((verOffset=nAgt.indexOf("Version"))!=-1) 
     fullVersion = nAgt.substring(verOffset+8); 
    } 
    // In MSIE, the true version is after "MSIE" in userAgent 
    else if ((verOffset=nAgt.indexOf("MSIE"))!=-1) { 
    browserName = "Microsoft Internet Explorer"; 
    fullVersion = nAgt.substring(verOffset+5); 
    } 
    // In Chrome, the true version is after "Chrome" 
    else if ((verOffset=nAgt.indexOf("Chrome"))!=-1) { 
    browserName = "Chrome"; 
    fullVersion = nAgt.substring(verOffset+7); 
    } 
    // In Safari, the true version is after "Safari" or after "Version" 
    else if ((verOffset=nAgt.indexOf("Safari"))!=-1) { 
    browserName = "Safari"; 
    fullVersion = nAgt.substring(verOffset+7); 
    if ((verOffset=nAgt.indexOf("Version"))!=-1) 
     fullVersion = nAgt.substring(verOffset+8); 
    } 
    // In Firefox, the true version is after "Firefox" 
    else if ((verOffset=nAgt.indexOf("Firefox"))!=-1) { 
    browserName = "Firefox"; 
    fullVersion = nAgt.substring(verOffset+8); 
    } 
    // In most other browsers, "name/version" is at the end of userAgent 
    else if ((nameOffset=nAgt.lastIndexOf(' ')+1) < 
       (verOffset=nAgt.lastIndexOf('/'))) 
    { 
    browserName = nAgt.substring(nameOffset,verOffset); 
    fullVersion = nAgt.substring(verOffset+1); 
    if (browserName.toLowerCase()==browserName.toUpperCase()) { 
     browserName = navigator.appName; 
    } 
    } 
    // trim the fullVersion string at semicolon/space if present 
    if ((ix=fullVersion.indexOf(";"))!=-1) 
     fullVersion=fullVersion.substring(0,ix); 
    if ((ix=fullVersion.indexOf(" "))!=-1) 
     fullVersion=fullVersion.substring(0,ix); 

    majorVersion = parseInt(''+fullVersion,10); 
    if (isNaN(majorVersion)) { 
    fullVersion = ''+parseFloat(navigator.appVersion); 
    majorVersion = parseInt(navigator.appVersion,10); 
    } 

    document.write('' 
    +'Browser name = '+browserName+'<br>' 
    +'Full version = '+fullVersion+'<br>' 
    +'Major version = '+majorVersion+'<br>' 
    +'navigator.appName = '+navigator.appName+'<br>' 
    +'navigator.userAgent = '+navigator.userAgent+'<br>' 
    ) 
    var OSName="Unknown OS"; 
    if (navigator.appVersion.indexOf("Win")!=-1) OSName="Windows"; 
    if (navigator.appVersion.indexOf("Mac")!=-1) OSName="MacOS"; 
    if (navigator.appVersion.indexOf("X11")!=-1) OSName="UNIX"; 
    if (navigator.appVersion.indexOf("Linux")!=-1) OSName="Linux"; 
    document.write('Your OS: '+OSName+'<br>'); 
    if(browserName == 'Chrome') 
    { 
    document.write("u r using chrome "+fullVersion); 
    <?php include("top.php") ?> ; 

    } 
    else { 
    alert("Not chrome"); 
    } 
    </script> 
+0

也許你可以使用ajax加載它,只是不要使用include,因爲無論你的用戶代理嗅探的結果如何,它仍然會被包含在頁面中。 –

回答

2

你不能,你不應該。瀏覽器不執行任何PHP代碼。

我需要的是檢查瀏覽器名稱,如果它的鉻然後只需要顯示top.php文件。但是在每個瀏覽器中的代碼中都包含該頁面。

我會反對在服務器端做這樣的事情,但是如果你必須這麼做,你可以嘗試通過檢查請求頭來檢查瀏覽器。

嘗試檢查$_SERVER['HTTP_USER_AGENT']

參見:http://php.net/manual/en/function.get-browser.php

1

PHP是一個服務器端語言。它在服務器內部運行。

Javascript是用戶端語言。從某種意義上說,它在瀏覽器中運行

您不能在客戶端包含aphp文件。瀏覽器只能理解html,js css等

您必須檢查服務器陣列中的用戶代理並相應地加載頁面。 你可以使用

$ _SERVER ['HTTP_USER_AGENT'];或getBrowser()

0

它不可能包含php代碼在js文件中。根據我的最佳方式是,

把這個js腳本放在頭上,而不是檢查條件瀏覽器。

if(browser =='chrome') 
{ 
    document.getElementById('top').style.display='block'; 
} 
else 
{ 
    document.getElementById('top').style.display='none'; 
} 

<div id='top'> 
    <?php require_once("top.php"); ?> 
</div> 
+0

但這在某些情況下會有問題,因爲這會始終在服務器端運行代碼。如果你做一些基於瀏覽器的後端操作?這只是爲了提供信息。沒有消極的,但! – Venu

+0

雅我知道,但它可以幫助隱藏內容。 –

+0

還有一個問題,你試圖在它之前隱藏一個元素。現在有理由給你-1!道歉! – Venu

1

爲了破譯您的用戶使用,並根據什麼瀏覽器,結果包括獨立的PHP文件,可以使用$_SERVER['HTTP_USER_AGENT'];甚至內置的getBrowser()功能 - http://php.net/manual/en/function.get-browser.php

<?php 
    $browser = get_browser(null, true); 
    print_r($browser); 
?> 

此代碼應該給你一個類似於此的列表 -

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3 

Array 
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$ 
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9* 
    [parent] => Firefox 0.9 
    [platform] => WinXP 
    [browser] => Firefox 
    [version] => 0.9 
    [majorver] => 0 
    [minorver] => 9 
    [cssversion] => 2 
    ... 
) 

然後,您可以測試以查看您用戶使用哪個瀏覽器g並相應地包含單獨的文件。

相關問題