DHTML:AddFunction

  DHTML:AddFunction( string library, string name, function callback )

Açıklama

Çağrıldığında bir Lua geri çağrısını (callback) tetikleyecek bir Javascript fonksiyonu tanımlar.

HTML belgesi tamamen yüklendikten sonra çağrılmalıdır.

Argümanlar

1 string library
Tanımladığınız JS fonksiyonunun kütüphane adı.
2 string name
Tanımladığınız JS fonksiyonunun adı.
3 function callback
JS fonksiyonu çağrıldığında çalıştırılacak olan fonksiyon. JS fonksiyonuna iletilen argümanlar buraya da iletilir.

Örnek

Javascript'ten gelen metni konsola renkli olarak yazdırır.

-- Create the frame local frame = vgui.Create( "DFrame" ) frame:SetSize( 800, 600 ) frame:Center() -- Create a green color variable local color_green = Color( 0, 255, 0 ) -- Define the Javascript function in the DHTML element local DHTML = vgui.Create( "DHTML", frame ) DHTML:Dock( FILL ) DHTML:OpenURL( "https://wiki.gmodtr.com/gmodTRTRTR/DHTML" ) DHTML:AddFunction( "console", "luaprint", function( str ) MsgC( color_green, str ) -- Print the given string end) -- This runs our function. Our function could also be called from Javascript on the DHTML's page. DHTML:RunJavascript( "console.luaprint( 'Hello from Javascript!' );" )

Örnek

Eklenen JavaScript fonksiyonuna son argüman olarak bir geri çağrı (callback) iletmek, Lua fonksiyonumuzdan döndürülen değerleri kullanmamızı sağlar.

Elbette, her biri kendi argümanı olacak şekilde birden fazla dönüş değeri kullanmanıza izin verilir.

Tablolar beklediğiniz gibi çalışmalıdır. Lua tablosu {true, a = true}, her ikisi de true değerine eşit olan 1 ve a anahtarlarına sahip bir nesne olacaktır. Metatablo davranışları belirsizdir.

Userdata (Vector, Player, vb.) doğal olarak undefined (tanımsız) olacaktır.

https://github.com/Facepunch/garrysmod-issues/issues/3995#issuecomment-531491316 adresindeki bilgiye göre

Bu durum yalnızca x86-64 dalı için geçerlidir (Awesomium yerine Chromium kullanılan sürüm), yine de varsayılan dalda da çalışması için dönüş değerlerini normal şekilde işlemeye devam edebilirsiniz.
] lua_run_cl A = vgui.Create"DHTML" ] lua_run_cl A:OpenURL("https://duckduckgo.com/html/") ] lua_run_cl A:AddFunction("gmod", "test", function(x) return x end ) -- This works ] lua_run_cl A:RunJavascript("gmod.test('test', console.log)") [HTML] test ] lua_run_cl A:AddFunction("gmod", "say", function(x) RunConsoleCommand("say", x) end) ] lua_run_cl A:RunJavascript("gmod.test('test', gmod.say)") Bell: test -- This doesn't work ] lua_run_cl A:RunJavascript("gmod.test(console.log, 'test')")

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord