Я пытаюсь использовать библиотеку диаграмм XML / SWF с cherrypy. Я хочу генерировать HTML-отчеты с красивыми графиками.
Я пытаюсь представить один из стандартных примеров диаграмм XML / SWF с cherryPy, но по какой-то причине JavaScript не работает должным образом с cherryPy.
Я создал следующий скрипт Python:
import os.path
import os.path
import cherrypy
import os</p>
<p>class index:
def index(self):
return open('sample.html', 'r')
index.exposed = True</p>
<p>if <strong>name</strong> == '<strong>main</strong>':
current_dir = os.path.dirname(os.path.abspath(<strong>file</strong>))
print current_dir
print os.path.join(current_dir, 'data', 'scripts', 'AC_RunActiveContent.js')
# Set up site-wide config first so we get a log if errors occur.
cherrypy.config.update({'environment': 'production',
'log.error_file': 'site.log',
'log.screen': True})</p>
<pre><code>conf = {'/js/AC_RunActiveContent.js': {'tools.staticfile.on': True,
'tools.staticfile.filename': os.path.join(current_dir, 'data', 'scripts', 'AC_RunActiveContent.js')}}
cherrypy.quickstart(index(), '/', config=conf)
У меня следующая структура каталогов:
<code>
D:.
+---charts_library
+---data
¦ +---css
¦ +---scripts
+---resources
+---button_rollover
+---chart_in_swf
+---cursor
+---full_screen
+---preview_scroll
+---scroll</p>
<p>
Я поместил файл javascript и все файлы, необходимые для библиотеки, в папку. \ Data \ scripts. (Я также пытался поместить эти файлы в корневую папку, но это тоже не сработало)
пример html-файла выглядит следующим образом:
<code>
<HTML><br />
<script language="javascript">AC_FL_RunContent = 0;</script><br />
<script language="javascript"> DetectFlashVer = 0; </script><br />
<script src="AC_RunActiveContent.js" language="javascript"></script><br />
<script language="JavaScript" type="text/javascript"><br />
<!--<br />
var requiredMajorVersion = 9;<br />
var requiredMinorVersion = 0;<br />
var requiredRevision = 45;<br />
--><br />
</script><br />
<BODY bgcolor="#FFFFFF"><br />
<br />
<br />
<script language="JavaScript" type="text/javascript"><br />
<!--<br />
if (AC_FL_RunContent == 0 || DetectFlashVer == 0) {<br />
alert("This page requires AC_RunActiveContent.js.");<br />
} else {<br />
var hasRightVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);<br />
if(hasRightVersion) { <br />
AC_FL_RunContent(<br />
'codebase', 'http: //download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',<br />
'width', '400',<br />
'height', '250',<br />
'scale', 'noscale',<br />
'salign', 'TL',<br />
'bgcolor', '#777788',<br />
'wmode', 'opaque',<br />
'movie', 'charts',<br />
'src', 'charts',<br />
'FlashVars', 'library_path=charts_library&xml_source=sample.xml', <br />
'id', 'my_chart',<br />
'name', 'my_chart',<br />
'menu', 'true',<br />
'allowFullScreen', 'true',<br />
'allowScriptAccess','sameDomain',<br />
'quality', 'high',<br />
'align', 'middle',<br />
'pluginspage', 'http: //www.macromedia.com/go/getflashplayer',<br />
'play', 'true',<br />
'devicefont', 'false'<br />
); <br />
} else { <br />
var alternateContent = 'This content requires the Adobe Flash Player. '<br />
+ '<u><a href=http: //www.macromedia.com/go/getflash/>Get Flash</a></u>.';<br />
document.write(alternateContent); <br />
}<br />
}<br />
// --><br />
</script><br />
<noscript><br />
<P>This content requires JavaScript.</P><br />
</noscript><br />
<br />
</BODY><br />
</HTML></p>
<p>
Когда я дважды щелкаю файл примера, он работает нормально, но когда я запускаю скрипт python и просматриваю локальный адрес хоста на порту 8080, появляется всплывающее окно, которое показывает следующее сообщение:
"Эта страница требует AC_RunActiveContent.js"
Я думаю, что я сделал что-то не так в моем скрипте Python, но я не могу выяснить, что я сделал не так.
Почему javascript не работает в cherryPy, а работает в файле sample.html? Я что-то забыл?