benim gwt jsni fonksiyonu içindenKullanım jquery
$("#"+profileId).offset().top
kullanabilmek için değilim jsni. Ben bu
'u denedim, ancak bu da çalışmıyor. Burada sözdizimi kaçırdığımı hissediyorum. Herhangi biri
benim gwt jsni fonksiyonu içindenKullanım jquery
$("#"+profileId).offset().top
kullanabilmek için değilim jsni. Ben bu
'u denedim, ancak bu da çalışmıyor. Burada sözdizimi kaçırdığımı hissediyorum. Herhangi biri
Üç çözümler öneriyorum:
1- Kişisel Jsni kodu tekabül içine alın zorunda olması dışında iyi görünüyor yerel işlev ve bir çift (veya döküm yapmak için gwt isterseniz başka bir sayı türü) döndürün.
native double getTop(String profileId) /*-{
return $wnd.$("#" + profileId).offset().top;
}-*/;
Eğer aracılığıyla hataları görmek istiyorsa senin UncaughExceptionHandler
yerine jQuery kullanmak yerine, bir $entry
blokta
native double getTop(String profileId) /*-{
return $entry(function(data) {
return $wnd.$("#" + profileId).offset().top;
});
}-*/;
2- kodunuzu sarın Ama gerekir, sana gwt-query aka gQuery kullanmaya teşvik ediyoruz. Yani, jQuery'nizi .html'ye yüklemeniz gerekmez ve uygulamanızda jsni ile uğraşmanıza gerek yoktur.
gQquery ile hemen hemen aynı jQuery sözdizimine sahipsiniz, ancak java'da güvenli yazın, refactoring, test edin .... Ama aynı zamanda düzinelerce yardımcı programa sahip olacaksınız (en basit ajax, vaatler, seçiciler vb.) gwt çekirdeğinde değil.
gQuery tam GWT sıfırdan yeniden hafif bir kütüphanesidir. Bu, kendi sayfalarında jquery.js dahil etmek yok (gibi yanlış diğer yanıtında söylenir) jQuery kütüphanesinin bir sarıcı DEĞİLDİR.
başka gwt kütüphane ile olduğu gibi, gwt derleyici size gquery kullanmak yok bir şey kurtulmak istiyorum. Yaklaşımınızda uygulamanız tüm jquery öğelerini yüklemelidir. senin durumunda Yani
, ve .java sınıflarında bu kodu yazmak gquery kullanarak:import static com.google.gwt.query.client.GQuery.*;
... onModuleLoad() {
int top = $("#"+profileId).offset().top;
}
3- Son olarak, eğer, bir elementin ofset almak için saf gwt kodu kullanma seçeneği onun kimliğini biliyorum:
int top = DOM.getElementById(profileId).getOffsetTop();
JSNI yönteminde "double" ve GQUERY ve GWT'de "int" neden ??? –
Seçenek 3 çalışıyor ... Çok teşekkürler ... – javalearner
JS sadece numaraları için bir tür vardır, bu yüzden jsni'den bir sayı döndürmek için doğal yol iki katına çıkar, aksi halde gwt döküm ile uğraşmak zorundadır. yöntem imzasını değiştirmek ve bir int döndürmek ve döküm yapmak gwt bırakın. Gquery bir int döndürür, çünkü getOffsetTop() işlevi GWT'de döner ve elemanların hesaplanması için onu temsil ederiz. –
yardım edebilir mi? Ana sayfanıza jQuery kitaplığı eklediğinizi kabul ediyorum.
doğru sözdizimi
private native int myJquery() /*-{
$wnd.$(function() { //may be you forgot this line
return $wnd.$("#"+profileId).offset().top;
});
}-*/;
olduğunu Ve sadece GWT
jquery kullanmaya başladı varsayarak.
şiddetle bir hafif üçüncü taraf kitaplığı bu soru için
Bilgi için teşekkürler. Değeri jsni işlevinden böyle döndürmeye çalışıyorum. ama bunu elde edemiyorum. 'Code'public statik yerli int getIFrameTop (Dize profileId)/* -... { \t \t $ wnd $ (function() { \t \t dönüş $ wnd $ ("#" + profileId) .offset() üst \t \t}); \t} - * /; 'code' – javalearner
sorunuzu tam kodunuzla güncelleştirin ve kontrolün JNSI içine geldiğinden emin misiniz? İlk satırdaki uyarıyı koyarak kontrol edin –
@Baddshah error: GWTQuery değil jquery bir sarıcı, gwtquery tamamen gwt'de yazılmış bir kütüphanedir. Kendi kodlarını yayınlamadıkları için sayfa bilgisine dayalı bir sarıcı olması gereken gwt-jquery ile bağlantı kurdunuz (jareyi el ile açmadığınız sürece) –
kolay bir yolu mütevazi bir eval beraberdir.
public static native void eval(String toEval)/*-{
return $wnd.eval(toEval);
}-*/;
Sonra sadece komut
eval("$('#'" + profileId + ").offset().top");
kullanmak Ve çünkü güvenli bir biri olarak kod düşünebiliriz GWT kod içine denir.
Bu yaklaşımın bir dezavantajı, değerlendirmeye göndermekte olduğunuz dizinin içeriğinde herhangi bir IDE analizi yapmamanızdır. Bu şekilde, bir yerde bir yazım hatası varsa veya tanımlanmamış bir özelliği çağırıyorsanız, çalışma zamanına kadar bilmezsiniz. – Ronald
Doğru, dikkatli kullanım içindir. –
jsni yönteminizin tüm kodu nedir (dönüş türü, parametreler vb.)? jquery.js dosyasını index.html dosyanıza mı yüklüyorsunuz? Kodunuz çalıştırıldığında herhangi bir hata alıyor musunuz? –