我试图在GWT中使用CSS选择器(例如“#someId .className a”)来抓取任意元素.
我正在构建一个可以在第三方网站上生活的JS小部件,并希望能够与页面上的元素进行交互.通过JavaDocs搜索我没有看到任何可以通过选择器找到元素的东西.我确实遇到了GQuery,但它似乎像项目might be dead,我不知道它是否适用于GWT 2.
我考虑过的一个选项是将现有库(jQuery,Mootools,Prototype等)包装到GWT类中,并通过JSNI展现所需的行为.似乎这可能非常bukyky.
任何人都有使用通用CSS选择器在GWT的经验?
解决方法
有
DOM
类,它提供了许多用于访问DOM树的包装方法.没有什么功能需要我所知道的CSS选择器jQuery样式 – GWT只是鼓励/强制通过Widget(等等)访问DOM元素,而不是直接 – 虽然我明白,在你的情况下,这种“低级”方法可能需要通过纯Java GWT方法,我看到的唯一方法是通过DOM类的很多(可能是可怕的)链接/调用.如果你所要做的只是访问一些id,那将会更容易,因为有
RootPanel.get(id)
(和
DOM.getElementById(id)
,他们返回的对象类型不同).
然而,像你已经建议的那样,JSNI可能会提供一个更好的解决方案 – 尝试从JSNI作为一个元素返回,例如$wnd.$(“#someId .className a”) – 实际上,你可以从JSNI返回任何东西,GWT将只是废除您尝试使用的第二个,将int作为DOM元素或某些东西.
PS:虽然GQuery项目似乎死了/不活动,可能值得检查他们如何包装jQuery调用(如$),以便可以在GWT中使用它们.