it may be a problem with IE sending events differently. i would try to use jquery in hopes that it normalizes how events work across browsers.
-igor On Fri, May 13, 2011 at 4:34 AM, vov <[email protected]> wrote: > Hi All, > > I have a table and JS on the page -> when table scrolling in the very down > JS function call wicket and label which displayed on the page incremented. > All good with FireFox and all good in case with IE if you will pull > scrolling down by your mouse. But if you will use your mouse wheel -> wicket > will be called twice and label will be incremented twice too. > > Java: > public class ScrollTableTestPage extends WebPage > { > private int count = 0; > > public ScrollTableTestPage() > { > final DataTable<Contact> table = new DataTable<Contact>("table", // > (IColumn<Contact>[]) Arrays.asList(new > PropertyColumn<Contact>(Model.of("Name"), "name")).toArray(), // > new ListDataProvider<Contact>(generateContacts()), > Integer.MAX_VALUE); > add(table.setOutputMarkupId(true)); > final Label label = new Label("label", new Model<Integer>() > { > @Override > public Integer getObject() > { > return count; > } > }); > add(label.setOutputMarkupId(true)); > add(new AbstractDefaultAjaxBehavior() > { > @Override > protected void respond(final AjaxRequestTarget target) > { > count++; > target.addComponent(label); > } > > @Override > public void renderHead(IHeaderResponse response) > { > super.renderHead(response); > response.renderOnDomReadyJavascript(getCallbackScript().toString()); > } > > @Override > protected CharSequence getCallbackScript() > { > String script = "var div = document.getElementById('div');" // > + "var table = document.getElementById('" + table.getMarkupId() > + "');" // > + "div.onscroll = function(){" // > + "var var1 = div.scrollTop;" // > + "var var2 = div.clientHeight;" // > + "var var3 = table.clientHeight;" // > + "if((var1 + var2) == var3){" // > + generateCallbackScript("wicketAjaxGet('" + getCallbackUrl() + > "'") // > + "}" // > + "};"; > return script; > } > }); > } > > private List<Contact> generateContacts() > { > List<Contact> contacts = new ArrayList<Contact>(); > for (int i = 0; i < 30; i++) > { > contacts.add(new Contact("name-" + i)); > } > return contacts; > } > > private class Contact implements Serializable > { > private String name; > > public Contact(String name) > { > super(); > this.name = name; > } > > public String getName() > { > return name; > } > > public void setName(String name) > { > this.name = name; > } > } > } > > HTML: > <html xmlns="http://www.w3.org/1999/xhtml" > xmlns:wicket="http://wicket.apache.org/"> > <body> > <wicket:head> > > </wicket:head> > <div class="eXtremeTable" id="div"> > <table border="0" cellspacing="0" cellpadding="0" class="tableRegion" > width="100%" wicket:id="table"></table> > </div> > > </body> > </html> > > Sorry, this is not exactly a wicket question but maybe someone can help. > > -- > View this message in context: > http://apache-wicket.1842946.n4.nabble.com/IE-call-wicket-twice-from-JS-tp3519995p3519995.html > Sent from the Users forum mailing list archive at Nabble.com. > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
