# DHTML

- **Ortam:** İstemci, Menü
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/DHTML
- **Çeviri tarihi:** 2025-09-08

## Açıklama

DHTML kontrolü, dahili Awesomium çatısını sarmalar, Lua'dan Javascript fonksiyonlarını çağırmayı ve HTML içinden Lua çalıştırmayı destekler. Lua kodu çalıştırma varsayılan olarak devre dışıdır.

[Kaynağı görüntüle](https://github.com/Facepunch/garrysmod/blob/master/garrysmod/lua/vgui/dhtml.lua)

## Ebeveyn

Bu sayfada listelenmeyen metotları vb. [Awesomium](https://gmod.tr/wiki/Awesomium)'dan miras alır.

## Olaylar

DHTML:[OnBeginLoadingDocument](https://gmod.tr/wiki/Panel.OnBeginLoadingDocument)( [string](https://gmod.tr/wiki/string) url )

Bu panel bir sayfayı yüklemeye başladığında çağrılır.

[boolean](https://gmod.tr/wiki/boolean) DHTML:[OnCallback](https://gmod.tr/wiki/Panel.OnCallback)( [string](https://gmod.tr/wiki/string) library, [string](https://gmod.tr/wiki/string) name, [table](https://gmod.tr/wiki/table) arguments )

Motor tarafından bir geri çağırma (callback) fonksiyonu çağrıldığında çağrılır.

DHTML:[OnChangeTargetURL](https://gmod.tr/wiki/PANEL.OnChangeTargetURL)( [string](https://gmod.tr/wiki/string) url )

HTML panelleri tarafından, çerçevenin hedef URL'si değiştiğinde çağrılır, bu durum bir bağlantının üzerine gelindiğinde gerçekleşir.

DHTML:[OnChangeTitle](https://gmod.tr/wiki/PANEL.OnChangeTitle)( [string](https://gmod.tr/wiki/string) newTitle )

HTML panelleri tarafından, yüklenen sayfanın başlığı değiştiğinde çağrılır.

DHTML:[OnChildViewCreated](https://gmod.tr/wiki/PANEL.OnChildViewCreated)( [string](https://gmod.tr/wiki/string) sourceURL, [string](https://gmod.tr/wiki/string) targetURL, [boolean](https://gmod.tr/wiki/boolean) isPopup )

HTML panelleri tarafından, sayfa yeni bir alt görünüm (popup veya yeni sekme gibi) açmaya çalıştığında çağrılır.

DHTML:[OnDocumentReady](https://gmod.tr/wiki/PANEL.OnDocumentReady)( [string](https://gmod.tr/wiki/string) url )

HTML panelleri tarafından, panelin DOM'u kurulduğunda çağrılır. Burada JavaScript çalıştırabilirsiniz.

DHTML:[OnFinishLoadingDocument](https://gmod.tr/wiki/Panel.OnFinishLoadingDocument)( [string](https://gmod.tr/wiki/string) url )

Bu panel bir sayfayı başarıyla yüklediğinde çağrılır.

## Metotlar

DHTML:[AddFunction](https://gmod.tr/wiki/DHTML:AddFunction)( [string](https://gmod.tr/wiki/string) library, [string](https://gmod.tr/wiki/string) name, [function](https://gmod.tr/wiki/function) callback )

Çağrıldığında bir Lua geri çağırma fonksiyonunu çağıracak bir Javascript fonksiyonu tanımlar. HTML belgesi tamamen yüklendikten sonra çağrılmalıdır.

DHTML:[Call](https://gmod.tr/wiki/DHTML:Call)( [string](https://gmod.tr/wiki/string) js )

Bir dizeyi (string) bir panelde JavaScript kodu olarak çalıştırır/yürütür. Bu fonksiyon ifadeyi değerlendirmez (yani, JavaScript (JS) bağlamından Lua bağlamına değişken aktarmanıza izin vermez). Çünkü bir dönüş değeri nil/değer yok (diğer bir deyişle void) şeklindedir. JS'den Lua'ya değer aktarmak/döndürmek isterseniz, bu işi başarmak için DHTML:AddFunction fonksiyonunu kullanmak isteyebilirsiniz. Bu fonksiyon DHTML:QueueJavascript'in bir takma adıdır (kaynak).

DHTML:[ConsoleMessage](https://gmod.tr/wiki/DHTML.ConsoleMessage)( [string](https://gmod.tr/wiki/string) msg )

DHTML penceresinin içindeki sayfa console.log javascript fonksiyonunu çalıştırdığında çağrılır. x86-64 beta sürümünde, tüm yerleşik console.* javascript fonksiyonları için çağrılır. Eğer DHTML:SetAllowLua true olarak ayarlanmışsa ve mesaj RUNLUA: ile başlıyorsa, RUNLUA: ifadesini takip eden metin Lua ortamında kod olarak yürütülür (DHTML pencerelerinden Lua bu şekilde çağrılır).

[boolean](https://gmod.tr/wiki/boolean) DHTML:[GetAllowLua](https://gmod.tr/wiki/DHTML:GetAllowLua)()

Yüklenen sayfanın DHTML:SetAllowLua tarafından ayarlanan Lua kodunu çalıştırıp çalıştıramayacağını döndürür.

[boolean](https://gmod.tr/wiki/boolean) DHTML:[GetScrollbars](https://gmod.tr/wiki/DHTML:GetScrollbars)()

Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. Bozuk. Bunun yerine CSS overflow kuralını kullanın. DHTML:SetScrollbars tarafından ayarlanan değeri döndürür.

DHTML:[QueueJavascript](https://gmod.tr/wiki/DHTML:QueueJavascript)( [string](https://gmod.tr/wiki/string) js )

Bir dizeyi (string) bir panelde JavaScript kodu olarak çalıştırır/yürütür. Bu fonksiyon ifadeyi değerlendirmez (yani, JavaScript (JS) bağlamından Lua bağlamına değişken aktarmanıza izin vermez). Çünkü bir dönüş değeri nil/değer yok (diğer bir deyişle void) şeklindedir. JS'den Lua'ya değer aktarmak/döndürmek isterseniz, bu işi başarmak için DHTML:AddFunction fonksiyonunu kullanmak isteyebilirsiniz. Eğer Panel:IsVisible false ise, PANEL:Think çalışmaz, bu da Javascript Kuyruğunun işlenmeyeceği anlamına gelir. Bunun yerine panelin çizimini durdurmak için PANEL:Paint'i geçersiz kılmayı (override) düşünün.

DHTML:[SetAllowLua](https://gmod.tr/wiki/DHTML:SetAllowLua)( [boolean](https://gmod.tr/wiki/boolean) allow = false )

Yüklenen sayfanın Lua kodu çalıştırıp çalıştıramayacağını belirler. Bir DHTML penceresinden Lua'yı nasıl çalıştıracağınızı görmek için DHTML'e bakın.

DHTML:[SetScrollbars](https://gmod.tr/wiki/DHTML:SetScrollbars)( [boolean](https://gmod.tr/wiki/boolean) show )

Bunu kullanmamanızı tavsiye ederiz. Gelecekteki bir güncellemede değiştirilebilir veya kaldırılabilir. Bozuk. Bunun yerine CSS overflow kuralını kullanın. Web sayfası görüntüleme penceresinden daha büyük olduğunda yüklenen pencerenin kaydırma çubuklarını görüntüleyip görüntülemeyeceğini ayarlar. Bu, CSS overflow kuralına benzer.

> **NOT:** Awesomium, yalnızca TLS 1.0'a kadar desteklediği için çoğu HTTPS web sitesiyle çalışmaz.
>
> Bu ve diğer oluşturma (rendering) sorunları, x86-64 dalı (branch) kullanılarak düzeltilebilir.

## url/href/src Kullanımı

`<img src="/images/picture.jpg">` gibi Göreli Dosya Yollarının çalışmayacağını fark etmiş olabilirsiniz. Bunun için 3 çözüm vardır:

### asset://

`https://` yerine, yerel dosyalarımıza işaret edecek olan `asset://` kullanırız.

```lua
<img src="asset://garrysmod/materials/example_addon/example.png">
```

> **NOT:** Lütfen Eklentiler (Addons) klasörünüzü işaret etmeyin. Gmod'un eklenti dosyalarınızı dahil ettiği Dosya Konumunu kullanın.

### Çevrimiçi

Klasik Mutlak Dosya Yolları hala çalışır... tabii `çevrimdışıysanız` veya `web sitesi çökmüşse` ya da web sitesi `TLS 1.0 üzeri bir HTTPS` Sürümü kullanıyorsa durum değişir.

```lua
<img src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png">
```

### Base64 kodlaması

Bu, yerel Dosyanızı bir Base64 Dizesine (String) kodlayacaktır. Dize, `data:image/jpeg;base64,` gibi veri türüyle başlar ve ardından Base64 verisi olan uzun bir karakter zinciri gelir.

```lua
-- HTML içinde
<img src="data:image/jpeg;base64,LzlqLzRBQ...<!-- base64 verisi -->">

-- CSS içinde
url("data:image/jpeg;base64,LzlqLzRBQ...<!-- base64 verisi -->")
```

[https://www.base64-image.de/](https://www.base64-image.de/) gibi web siteleri dosyayı sizin için kodlayabilir.

## Örnekler

### Örnek

Bir DHTML oluşturur.

```lua
local frame = vgui.Create("DFrame")
frame:SetSize(300, 200)
frame:SetTitle("My new Derma frame")
frame:SetVisible(true)
frame:SetDraggable(true)
frame:MakePopup()
frame:Center()

--Formu bir html sayfasıyla doldur
local html = vgui.Create("DHTML", frame)
html:Dock(FILL)
html:SetHTML([[
    <input type='submit' onclick='console.log("RUNLUA:print(\"This is called in Lua context\")")' />
]])
-- Web sayfasının lua kodunu çağırmasını etkinleştir.
html:SetAllowLua(true)
```

### Örnek

Bir DHTML oluşturur ve içinde Google'ı açar.

```lua
local frame = vgui.Create("DFrame")
frame:SetSize(ScrW() * 0.5, ScrH() * 0.5)
frame:SetTitle("HTML Example!")
frame:Center()
frame:MakePopup()
local html = vgui.Create("DHTML", frame)
html:Dock(FILL)
html:OpenURL("https://www.google.com/")
```

**Çıktı:** ![](https://gmod.tr/api/uploads/wiki/cbe9d1a821d6d0f1f161.png)

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/DHTML
