I am running Google App engine with Python, yaml. Now i need to use whichbrowser.net with it (whichbrowser is using also a PHP and the error that occure is in the
But when i am trying to load the Javascript libraries of http://whichbrowser.net/ its failing "Uncaught SyntaxError: Unexpected token < " on detect.js line 1:
detect.js:
<?php
header("Content-Type: text/javascript");
header("Cache-Control: no-cache, no-store, must-revalidate, max-age=0");
header("Pragma: no-cache");
header("Expires: 0");
include('libraries/whichbrowser.php');
$options = array('headers' => apache_request_headers());
if (isset($_REQUEST['ua'])) $options['useragent'] = $_REQUEST['ua'];
if (isset($_REQUEST['e'])) $options['engine'] = intval($_REQUEST['e']);
if (isset($_REQUEST['f'])) $options['features'] = intval($_REQUEST['f']);
if (isset($_REQUEST['w'])) $options['width'] = intval($_REQUEST['w']);
if (isset($_REQUEST['h'])) $options['height'] = intval($_REQUEST['h']);
$detected = new WhichBrowser($options);
?>
index.html:
(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("
")===-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='/whichbrowser/detect.js?' + p.join('&');d.getElementsByTagName('head')[0].appendChild(s);})();
app.yaml:
- url: /whichbrowser
static_dir: whichbrowser
FYI - Google App Engine - do not allow PHP + Python to run at once. For that you need to use URL of the PHP running in another server.
This is a really Google App Engine trap, cause when the application become larger then there is no way to move.
There is nothing special about the way you load JavaScript
on App Engine
. It loads the same way as it would on any other platform/server.
Your JS
file(s) include PHP
processing directives. This will fail if your application is written in python.
You can write your app in PHP
, or you can write it in Python
. You cannot commingle both languages in the same version.
You could in theory use modules/versions to implement a PHP
and a Python
version and use dispatch routing to wire them together, but I'd posit that its far simpler if you simply find a browser detection library that doesn't have the PHP
language dependency.
More information about modules and dispatch routing: LINK