简体   繁体   中英

Javascript - how to load the javascript library while using Google App Engine?

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("\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='/whichbrowser/detect.js?' + p.join('&');d.getElementsByTagName('head')[0].appendChild(s);})();

app.yaml:

- url: /whichbrowser
  static_dir: whichbrowser

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM