2014-01-26 5 views
0

Я запускаю страницу html, которая объединяет WhichBrowser.Ошибка интеграции с помощью Browser

Как объяснено в файле 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();: «WhichBrowser не определен».

Что я сделал не так?

+2

Dunno, но вам никогда не нужно знать, в каком браузере работает пользователь. В значительной степени единственный раз, когда это нормально, для бенчмаркинга сайтов, таких как jsperf ... –

+0

имеет javascript-файл (detect.js), который загружается фрагментом кода, загруженным к моменту запуска нижнего фрагмента? –

+0

@NiettheDarkAbsol: Вы знаете, как заставить ВСЕ браузеры одинаково реагировать на поведение CSS3 для экрана и печати, когда у вас нет времени и ресурсов, чтобы протестировать их все и/или настроить 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);})(); 

Edit: Это означает, что по некоторым причинам прилагается WASN .htaccess файл Выполняется (например, перезаписывается).

Смежные вопросы