【发布时间】:2011-06-21 11:00:13
【问题描述】:
我从原生 NPAPI/XPCOM/ActiveX 获得 JavaScript 的结果。以前用户通过以下方式激活本机 GUI:
用户从插件 GUI 退出后,JavaScript 函数“signDocument”完成执行。
我将本机代码切换到异步模式。所以 JS func 'signDocument' 立即返回执行,结果必须在最近获取。
我写JS代码,是这样的:
函数signDocument(dataTagID,tagID4Event){ var npapi = document.getElementById("npapi"); npapi.Sign(langId, content, desc, ts, sign); 我的日志(“确定”); var scheduler = setInterval( 功能() { 我的日志(“失败”); 如果(npapi.AddonGetState()!=“完成”) 返回; 清除间隔(调度程序); out_sign = npapi.SignValue(); fireHTMLEvent(tagID4Event, '点击'); }, 1000); } }尝试以 1 秒的间隔获取结果并通过触发“点击”事件来模拟链接按下。 在测试静态 HTML 测试中一切正常。
我将 .jsf 文件重写为:
我希望调度程序获取结果并触发事件。但是调度程序没有被调用,因为在用户单击第一个链接(可见)后,JS 调用了为 GUI 创建单独线程并返回给 JS 的本机代码。下一页重新加载,似乎所有 JS 对象都死为页面死(我通过 'mylog' func 进行检查)。
真的第一个h:commandLink标签转换成:
所以在我的 JS 代码中添加了 oamSubmitForm,这似乎重新加载了我的页面并删除了 sheduler。
如何停止向onclick=""添加特殊代码?
【问题讨论】:
-
h:commandLink 会在 onClick 上渲染时添加表单提交逻辑,如果你不想额外的 javascript,你应该考虑简单的锚标签。
标签: javascript jsf jakarta-ee