我的网络应用程序结构如下:
包含n个链接和标签式结构的主页
每个链接在主页面的选项卡式结构中打开一个选项卡,并使用ajax在选项卡中加载页面
因为每个页面在ajax加载的完整函数中需要不同的javascript函数(主要用于init部分),所以我加载.js脚本并执行它。
现在我遇到了一个问题:我需要在其中一个标签中有一个文本编辑器,所以我选择了TinyMCE。它需要初始化,但只需要一次,否则会崩溃。 现在我需要一种方法来检查用户打开标签的次数。
我在jsps中寻找变量范围,并找到了“会话范围”。我知道无法从客户端访问服务器端会话变量,但是jsp中的这些会话范围变量是客户端,所以我想我会使用会话变量jsp一边来计算用户点击链接的次数。
在主要的jsp我说:
<c:set var="timesEditorLoaded" value="0" scope="session" />
打开编辑器的链接是:
<a tabindex="22" id="proposte_propostaTesto_a" class="colorbox" href="${pageContext.request.contextPath}/editorPopup?hiddenCallerFormElementId=proposte_propostaTesto&" onClick="incrementEditorVariable();">Apri editor</a>
函数incrementEditorVariable()是:
<script type="text/javascript">
function incrementEditorVariable()
{
alert("incrementEditorVariable: " + timesEditorLoaded);
timesEditorLoaded = timesEditorLoaded + 1;
}
</script>
但在Chrome中我得到了:
Uncaught ReferenceError: incrementEditorVariable is not defined
如果我将函数incrementEditorVariable放在外部.js文件中,如何访问存储在jsp中的会话变量? 有没有办法实现这个目标? 提前谢谢!
答案 0 :(得分:0)
您可以在用户点击按钮时修改onclick事件。看起来有点蹩脚,但如果onclick只有一件事需要关注,可以解决所有问题。
答案 1 :(得分:0)
我最终向MVC架构添加了一个会话变量,并完成了这项任务。我这样做试图修复一个错误,我完成了计算用户点击链接的次数,以防止初始化TinyMCE实例n次,但这并没有解决菜单保持打开的问题。