hostloc.js 源码文件内容如下:
- const allTextarea = document.querySelectorAll('textarea');
- allTextarea.forEach((textarea) => {
- textarea.addEventListener('paste', clipboardEvent);
- });
- function clipboardEvent(event) {
- const clipboardItems = event.clipboardData.items;
- for (const clipboardItem of clipboardItems) {
- if (clipboardItem.type.indexOf('image') != -1) {
- const parentDiv = this.parentElement;
- if (parentDiv.querySelectorAll('hr').length == 0) parentDiv.appendChild(document.createElement('hr'));
- const tips = document.createElement('div');
- tips.innerText = '正在上传图片,请稍等... ...';
- parentDiv.appendChild(tips);
- const echoDiv = document.createElement('div');
- parentDiv.appendChild(echoDiv);
- const rows = this.getAttribute('rows');
- const imageFile = clipboardItem.getAsFile();
- const formData = new FormData();
- formData.append('image', imageFile);
- const xhr = new XMLHttpRequest();
- xhr.open('POST', 'https://tucdn.wpon.cn/api/upload', true);
- xhr.onreadystatechange = () => {
- if (xhr.readyState === 4 && xhr.status === 200) {
- const cursorPos = this.selectionStart;
- const textBefore = this.value.substring(0, cursorPos);
- const textAfter = this.value.substring(cursorPos);
- let insertText = '';
- const result = JSON.parse(xhr.responseText);
- if (result.code === 200) {
- insertText = `\n[img]${result.data.url}[/img]\n`;
- echoDiv.innerHTML = `<a class="xi2" target="_blank" href="${result.data.url}">${result.data.url} 查看</a>`;
- } else {
- insertText = `\n[img]${result.msg}[/img]\n`;
- }
- this.value = textBefore + insertText + textAfter;
- this.selectionStart = cursorPos + insertText.length;
- this.selectionEnd = cursorPos + insertText.length;
- if (rows) this.setAttribute('rows', parseInt(rows) + 2);
- tips.remove();
- }
- };
- xhr.send(formData);
- }
- }
- }
- const observer = new MutationObserver(function (mutationsList) {
- for (const mutation of mutationsList) {
- if (mutation.type === 'childList') {
- const allTextarea = document.querySelectorAll('#append_parent textarea');
- allTextarea.forEach((textarea) => {
- textarea.addEventListener('paste', clipboardEvent);
- });
- }
- }
- });
- observer.observe(document.getElementById('append_parent'), {childList: true, subtree: true});
复制代码 |