mirror of
https://github.com/jlelse/GoBlog
synced 2024-06-08 05:26:27 +00:00
48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
(function () {
|
|
Array.from(document.querySelectorAll('.mdpreview')).forEach(element => {
|
|
// Get preview container
|
|
let previewContainer = document.getElementById(element.dataset.preview)
|
|
if (!previewContainer) {
|
|
return
|
|
}
|
|
// Get websocket path
|
|
let wsUrl = element.dataset.previewws
|
|
if (!wsUrl) {
|
|
return
|
|
}
|
|
// Create and open websocket
|
|
let ws = new WebSocket(((window.location.protocol === "https:") ? "wss://" : "ws://") + window.location.host + wsUrl)
|
|
ws.onopen = function () {
|
|
console.log("Preview-Websocket opened")
|
|
previewContainer.classList.add('preview')
|
|
previewContainer.classList.remove('hide')
|
|
if (ws) {
|
|
ws.send(element.value)
|
|
}
|
|
}
|
|
ws.onclose = function () {
|
|
console.log("Preview-Websocket closed")
|
|
previewContainer.classList.add('hide')
|
|
previewContainer.classList.remove('preview')
|
|
previewContainer.innerHTML = ''
|
|
ws = null
|
|
}
|
|
ws.onmessage = function (evt) {
|
|
// Set preview HTML
|
|
previewContainer.innerHTML = evt.data
|
|
}
|
|
ws.onerror = function (evt) {
|
|
console.log("Preview-Websocket error: " + evt.data)
|
|
}
|
|
// Add listener
|
|
let timeout = null
|
|
element.addEventListener('input', function () {
|
|
clearTimeout(timeout)
|
|
timeout = setTimeout(function () {
|
|
if (ws) {
|
|
ws.send(element.value)
|
|
}
|
|
}, 500)
|
|
})
|
|
})
|
|
})() |