【发布时间】:2013-10-14 13:38:18
【问题描述】:
我正在尝试将 Opentip 集成到 GWT 项目中。由于我的一些小部件是从 Java 而不是 HTML 加载的,看来我必须使用 JSNI 来正确绑定这些工具提示。这是我到目前为止所做的:
- 在我的 HTML 文件中,将相关的 JS/CSS 声明放在 GWT 的
nocache.js之前。 (我也尝试使用ScriptInjector复制 JS 加载,但这没有任何好处,所以我将其删除为多余的。 -
编写了一个 JSNI 方法来实例化工具提示:
private native void initControlTooltips() /*-{ var headerText = "Tooltip text"; new $wnd.Opentip($("#tooltipTrigger"), headerText); // more tooltips... }-*/
我尝试了上述方法的不同变体,但我了解到这是它应该工作的方式(幻灯片 20 here,虽然我无法直接链接到幻灯片)。到目前为止,我没有运气,最近的这个尝试,对我来说似乎是最正确的,实际上已经阻止了我的 GWT 模块的其余部分(在工具提示实例化调用之后),就好像我在某处有语法错误,尽管控制台没有报告任何内容。关于我做错了什么的任何想法?我对 GWT 和 JS 都比较陌生,所以我希望这只是一个愚蠢的初学者错误。
我还没有尝试过的一件事是编写 Overlay object,部分原因是我无法从文档中看到如何正确包装 JS 构造函数。如果这是这里的解决方案,欢迎提供一些关于如何做到这一点的指示。作为参考,我将使用的构造函数(来自 Opentip 文档)是:
new Opentip("#my-trigger-element", "Optional content", "Optional title", { ...options... });
感谢您的帮助;这看起来应该不是那么棘手的问题,但到目前为止,我的经验不足阻碍了我的努力。
更新
经过几个小时的诅咒和参数摆弄,我已经解决了这个问题,所以不要浪费任何时间来帮助我调试。今天稍晚有空的时候我会写一个答案。
【问题讨论】:
-
你有没有在纯 html+js 中尝试过任何 Opentip 功能?也许您可以在 index.html 页面上做一些简单的示例,甚至无需加载 GWT。
-
我已经尝试过了,事实上这就是我更愿意做的事情,但我试图将工具提示放在由 GWT 实例化和加载的小部件上,因此 Opentip 的绑定(在document.ready(),我相信) 不会拾取它们,即使我有 GWT 将 Opentip 特定的 html 添加到新的小部件。
标签: java javascript gwt jsni