2014-01-26 68 views
0

我正在運行一個集成了WhichBrowser的html頁面。WhichBrowser集成錯誤

正如README文件解釋說,我已經把下面的代碼(在<head>部分):

<script> 
    (function(){var p=[],w=window,d=document,e=f=0;p.push('ua='+encodeURIComponent(navigator.userAgent));e|=w.ActiveXObject?1:0;e|=w.opera?2:0;e|=w.chrome?4:0; 
    e|='getBoxObjectFor' in d || 'mozInnerScreenX' in w?8:0;e|=('WebKitCSSMatrix' in w||'WebKitPoint' in w||'webkitStorageInfo' in w||'webkitURL' in w)?16:0; 
    e|=(e&16&&({}.toString).toString().indexOf("\n")===-1)?32:0;p.push('e='+e);f|='sandbox' in d.createElement('iframe')?1:0;f|='WebSocket' in w?2:0; 
    f|=w.Worker?4:0;f|=w.applicationCache?8:0;f|=w.history && history.pushState?16:0;f|=d.documentElement.webkitRequestFullScreen?32:0;f|='FileReader' in w?64:0; 
    p.push('f='+f);p.push('r='+Math.random().toString(36).substring(7));p.push('w='+screen.width);p.push('h='+screen.height);var s=d.createElement('script'); 
    s.src='http://localhost/mysite/libs/whichbrowser/detect.js?' + p.join('&');d.getElementsByTagName('head')[0].appendChild(s);})(); 
</script> 

然後將下面的代碼(在<body>):

<script> 
Browsers = new WhichBrowser(); 
alert("You are using " + Browsers); 
</script> 

我m運行在easyPHP上,而.htaccess被考慮在內,所以.js被PHP解釋器解析。

運行頁面時(當然是從服務器),我得到Browsers = new WhichBrowser();行上的以下錯誤:「WhereBrowser未定義」。

我做錯了什麼?

+2

不知道,但你永遠不需要知道用戶正在運行的瀏覽器。幾乎沒有什麼是可以的基準站點像jsperf ... –

+0

有JavaScript文件(detect.js)加載的代碼片段加載時運行底部代碼段? –

+0

@NiettheDarkAbsol:你知道一種強制所有瀏覽器對CSS3行爲進行屏幕和打印的方式完全相同的方法,當你沒有足夠的時間和資源來測試所有的CSS和/或爲所有現有的CSS調整CSS時瀏覽器? – Oliver

回答

8

我有同樣的問題,並通過做固定了下列文件:

$(window).on('load', function() { 
    Browsers = new WhichBrowser(); 
    // Put rest of browser detection code here 
}); 

的問題是,加載detect.js前的腳本被調用。

+0

謝謝!我會試試這個。 – Oliver

+1

如果它適合你,你會接受我的答案嗎?謝謝! – isabisa

+0

我試過了,它似乎有效。但爲什麼我無法從其他地方訪問瀏覽器,而不是在那個小功能中訪我的意思是,我有一個JavaScript函數,我稍後調用,並且我想在那裏測試我的瀏覽器,但它表示瀏覽器未知會生成JS錯誤。 – Oliver

1

這是因爲在代碼片段的鏈接的最後一行應指向PHP腳本沒有js腳本,而應該是這樣的:

s.src='http://localhost/mysite/libs/whichbrowser/detect.php?' + p.join('&');d.getElementsByTagName('head')[0].appendChild(s);})(); 

編輯: 這意味着,由於某種原因,附加.htaccess文件WASN沒有執行(例如重寫)。