我正在将Web应用程序从PHP / MySQL后端迁移到Grails框架。但是,该应用程序为我编写了相当多的旧式JavaScript代码,我希望使用它们进行最少的重写。它当前无法正常工作,我不确定为什么。

一位 friend 写了一个淡出幻灯片脚本,该脚本要求将数组初始化为

var images[3];
images[0] = ['path to image', 'link to somewhere', 'target'];

用PHP编写时,我只是使用相对路径和双引号作为链接和目标,即
images[0] = ["../images/file.jpg", "", ""]

转到Grails,我希望幻灯片显示在所有页面上可见,因此可以插入main.gsp中。

我在头部声明了javascript链接为
<g:javascript src="fade_in.js" />

原始脚本的工作方式是在脚本中初始化图像数组,然后通过主体代码中的函数调用将其传递。由于我不知道是否有可能在js文件中使用Grails createLinkTo函数调用,因此我初始化了数组并使用调用了该函数
<div id="slideshow">
  <script type="text/javascript">
        var images[3];
        images[0] = ["<g:createLinkTo dir='images' file='nsf.jpg' />", "", ""]
        images[1] = ["<g:createLinkTo dir='images' file='east.jpg'/>", "", ""]
        images[2] = ["<g:createLinkTo dir='images' file='usm_horz.png' />", "", ""]
        new fadeshow(fadeimages,200,118,0,8000,1,"R");
  </script>
</div>

根据firebug的说法,文件的路径是正确的,但是它们没有显示在指定的div位置。我可以看到图像应该在哪里,并且它是空的。

那么,需要做什么才能将该功能与Grails应用程序集成?

最佳答案

除非已将js文件映射为gsp,否则无法在.js文件中使用GSP标记。
您可以创建一个gsp文件(例如fade_in.gsp)来声明images数组。

例如-fade_in.gsp

<script>
   //you initialize your javascript array here - you can use all gsp tags.
</script>

然后将此gsp文件包含在其他需要图像数组的页面中。

关于javascript - 将Javascript函数与Grails应用程序集成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10132254/

10-13 00:18