Mercurial Hosting > lang
view src/site.js @ 2:78708fa556a0
add login
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 08 Jul 2025 15:55:34 -0600 |
parents | 1c87f785eb42 |
children | b1adec083e44 |
line wrap: on
line source
'use strict'; function ajax(url,postData) { let request = new XMLHttpRequest(); let method = postData ? "POST" : "GET"; request.open( method, url ); if( typeof(postData)==='string' ) request.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); request.onload = function() { if( request.status !== 200 ) { let err = 'sr_ajax failed: ' + request.status; if( request.responseText ) { err += '\n' + request.responseText; document.write('<pre>'+request.responseText+'</pre>'); } err += '\npage = ' + window.location; ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); return; } try { //console.log(request.responseText); eval( request.responseText ); } catch(e) { window.sr_err = '\najax-url = ' + url; //window.sr_err += '\n'+('ajax-response =\n' + request.responseText).trim(); throw e; } }; request.send(postData); } window.onerror = function(msg, url, line, col, error) { if( !url ) return; let err = msg; err += '\nurl = ' + url; if( url != window.location ) err += '\npage = ' + window.location; err += '\nline = '+line; if( col ) err += '\ncolumn = ' + col; if( error ) { if( error.stack ) err += '\nstack = ' + error.stack; if( error.cause ) err += '\ncause= ' + error.cause; if( error.fileName ) err += '\nfileName= ' + error.fileName; } if( window.err ) { err += window.err; window.err = null; } ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); }; function ajaxForm(url,form) { let post = ''; for( let i=0; i<form.length; i++ ) { let input = form[i]; let name = input.name; if( name === '' ) continue; let type = input.type; if( (type==='radio' || type==='checkbox') && !input.checked ) continue; post += name + '=' + encodeURIComponent(input.value) + '&'; } ajax(url,post,{form:form}); } function showWaitingAiIcon() { document.querySelector('[waiting-ai-icon]').style.display = 'block'; } const isMobile = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; function textareaKey(aiKey,event) { if( event.keyCode===13 && !event.shiftKey && !event.ctrlKey && !isMobile ) { event.preventDefault(); askAi(aiKey); } } function fixTextarea(event) { let textarea = event.target; textarea.style.height = 'initial'; textarea.style.height = (textarea.scrollHeight+2) + 'px'; textarea.scrollIntoViewIfNeeded(false); } function askAi(aiKey) { let aiDiv = document.querySelector(`[ai_container="${aiKey}"]`); let input = aiDiv.querySelector('textarea'); let url = `ai_ask.js?key=${aiKey}&input=${encodeURIComponent(input.value)}`; ajax(url); input.value = ''; showWaitingAiIcon(); }