我有一个幻灯片 Web 应用程序,对于某些幻灯片,它包括从服务器端与该幻灯片一起呈现的 beforeSlideshowAction,javascript 与该幻灯片的内容一起呈现,因为它是生成此内容的幻灯片模板的一部分。
但是,以下的 javascript 函数不会与我的内容一起更新。例如,如果我要加载幻灯片,然后在这两张幻灯片上切换位置(更新将在幻灯片运行完整周期后由 ajax 完成),下面的 beforeSlideshowAction_slide1() 现在将呈现为 beforeSlideshowAction_slide2( ),但是当被调用时,只会存在一个名为 beforeSlideshowAction_slide1() 的函数,我假设所有 javascript 函数仅在页面初始加载时注册。
我记得通过在包含更新函数的脚本块上调用 eval 再次解决了类似的问题,我的问题是否有不那么骇人听闻的解决方案?
{# comment: from here the document will be updated by Ajax #}
<div id="slideshowbody">
{# comment: ordernumber is now 1 #}
<div id="slide{{ ordernumber }}">
//some content goes here
<script>
function beforeSlideshowAction_slide{{ ordernumber }}() {
//assign appropriate value to videoContent for current slide
videoContent[{{ ordernumber }}]='video={{ data0 }}&height={{ data1 }}&width={{ data2 }}&codec={{ data3 }}&fullscreen={{ data5 }}';
}
</script>
</div>
{# comment: ordernumber is now 2 #}
<div id="slide{{ ordernumber }}">
//some content goes here
//slide 2 doesn't have a function for a "beforeSlideshowAction"
</div>
</div>
不要担心我可能正在调用一个不存在的函数,我在 try/catch 块中执行它,我已经设置它以便为 try/catch 中的每张幻灯片调用一个 beforeSlideshowFunction,并且在幻灯片模板 如果我想要一个函数,我只是在那里定义一个函数,如果不是,我就跳过它。