|
1 | 1 | // ==UserScript== |
2 | 2 | // @name XMOJ |
3 | | -// @version 0.3.191 |
| 3 | +// @version 0.3.192 |
4 | 4 | // @description XMOJ增强脚本 |
5 | 5 | // @author @langningchen |
6 | 6 | // @namespace https://github/langningchen |
@@ -47,17 +47,22 @@ let GetRelativeTime = (Input) => { |
47 | 47 | else { RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24 / 365) + "年前"; } |
48 | 48 | return "<span title=\"" + Input.toLocaleString() + "\">" + RelativeName + "</span>"; |
49 | 49 | }; |
50 | | -let RenderMathJax = () => { |
51 | | - var ScriptElement = document.createElement("script"); |
52 | | - ScriptElement.id = "MathJax-script"; |
53 | | - ScriptElement.type = "text/javascript"; |
54 | | - ScriptElement.src = "https://cdn.bootcdn.net/ajax/libs/mathjax/3.0.5/es5/tex-chtml.js"; |
55 | | - document.body.appendChild(ScriptElement); |
56 | | - ScriptElement.onload = () => { |
57 | | - MathJax.startup.input[0].findTeX.options.inlineMath.push(["$", "$"]); |
58 | | - MathJax.startup.input[0].findTeX.getPatterns(); |
59 | | - MathJax.typeset(); |
60 | | - }; |
| 50 | +let RenderMathJax = async () => { |
| 51 | + if (document.getElementById("MathJax-script") === null) { |
| 52 | + var ScriptElement = document.createElement("script"); |
| 53 | + ScriptElement.id = "MathJax-script"; |
| 54 | + ScriptElement.type = "text/javascript"; |
| 55 | + ScriptElement.src = "https://cdn.bootcdn.net/ajax/libs/mathjax/3.0.5/es5/tex-chtml.js"; |
| 56 | + document.body.appendChild(ScriptElement); |
| 57 | + await new Promise((Resolve) => { |
| 58 | + ScriptElement.onload = () => { |
| 59 | + Resolve(); |
| 60 | + }; |
| 61 | + }); |
| 62 | + } |
| 63 | + MathJax.startup.input[0].findTeX.options.inlineMath.push(["$", "$"]); |
| 64 | + MathJax.startup.input[0].findTeX.getPatterns(); |
| 65 | + MathJax.typeset(); |
61 | 66 | }; |
62 | 67 | let GetUserInfo = async (Username) => { |
63 | 68 | if (localStorage.getItem("UserScript-User-" + Username + "-UserRating") != null && |
@@ -3697,14 +3702,33 @@ int main() |
3697 | 3702 | } |
3698 | 3703 | }); |
3699 | 3704 | ContentElement.addEventListener("input", () => { |
| 3705 | + ContentElement.classList.remove("is-invalid"); |
3700 | 3706 | PreviewTab.innerHTML = DOMPurify.sanitize(marked.parse(ContentElement.value)); |
3701 | 3707 | RenderMathJax(); |
3702 | 3708 | }); |
3703 | 3709 | TitleElement.addEventListener("input", () => { |
3704 | 3710 | TitleElement.classList.remove("is-invalid"); |
3705 | 3711 | }); |
3706 | | - ContentElement.addEventListener("input", () => { |
3707 | | - ContentElement.classList.remove("is-invalid"); |
| 3712 | + ContentElement.addEventListener("paste", (Event) => { |
| 3713 | + let Items = Event.clipboardData.items; |
| 3714 | + if (Items.length !== 0) { |
| 3715 | + for (let i = 0; i < Items.length; i++) { |
| 3716 | + if (Items[i].type.indexOf("image") != -1) { |
| 3717 | + let Reader = new FileReader(); |
| 3718 | + Reader.readAsDataURL(Items[i].getAsFile()); |
| 3719 | + Reader.onload = () => { |
| 3720 | + RequestAPI("UploadImage", { |
| 3721 | + "Image": Reader.result |
| 3722 | + }, (ResponseData) => { |
| 3723 | + if (ResponseData.Success) { |
| 3724 | + ContentElement.value += ``; |
| 3725 | + ContentElement.dispatchEvent(new Event("input")); |
| 3726 | + } |
| 3727 | + }); |
| 3728 | + }; |
| 3729 | + } |
| 3730 | + } |
| 3731 | + } |
3708 | 3732 | }); |
3709 | 3733 | SubmitElement.addEventListener("click", async () => { |
3710 | 3734 | ErrorElement.style.display = "none"; |
@@ -3853,6 +3877,27 @@ int main() |
3853 | 3877 | PreviewTab.innerHTML = DOMPurify.sanitize(marked.parse(ContentElement.value)); |
3854 | 3878 | RenderMathJax(); |
3855 | 3879 | }); |
| 3880 | + ContentElement.addEventListener("paste", (Event) => { |
| 3881 | + let Items = Event.clipboardData.items; |
| 3882 | + if (Items.length !== 0) { |
| 3883 | + for (let i = 0; i < Items.length; i++) { |
| 3884 | + if (Items[i].type.indexOf("image") != -1) { |
| 3885 | + let Reader = new FileReader(); |
| 3886 | + Reader.readAsDataURL(Items[i].getAsFile()); |
| 3887 | + Reader.onload = () => { |
| 3888 | + RequestAPI("UploadImage", { |
| 3889 | + "Image": Reader.result |
| 3890 | + }, (ResponseData) => { |
| 3891 | + if (ResponseData.Success) { |
| 3892 | + ContentElement.value += ``; |
| 3893 | + ContentElement.dispatchEvent(new Event("input")); |
| 3894 | + } |
| 3895 | + }); |
| 3896 | + }; |
| 3897 | + } |
| 3898 | + } |
| 3899 | + } |
| 3900 | + }); |
3856 | 3901 | let RefreshReply = (Silent = true) => { |
3857 | 3902 | if (!Silent) { |
3858 | 3903 | PostTitle.innerHTML = `<span class="placeholder col-${Math.ceil(Math.random() * 6)}"></span>`; |
@@ -4057,6 +4102,27 @@ int main() |
4057 | 4102 | PreviewTab.innerHTML = DOMPurify.sanitize(marked.parse(ContentEditor.value)); |
4058 | 4103 | RenderMathJax(); |
4059 | 4104 | }); |
| 4105 | + ContentEditor.addEventListener("paste", (Event) => { |
| 4106 | + let Items = Event.clipboardData.items; |
| 4107 | + if (Items.length !== 0) { |
| 4108 | + for (let i = 0; i < Items.length; i++) { |
| 4109 | + if (Items[i].type.indexOf("image") != -1) { |
| 4110 | + let Reader = new FileReader(); |
| 4111 | + Reader.readAsDataURL(Items[i].getAsFile()); |
| 4112 | + Reader.onload = () => { |
| 4113 | + RequestAPI("UploadImage", { |
| 4114 | + "Image": Reader.result |
| 4115 | + }, (ResponseData) => { |
| 4116 | + if (ResponseData.Success) { |
| 4117 | + ContentEditor.value += ``; |
| 4118 | + ContentEditor.dispatchEvent(new Event("input")); |
| 4119 | + } |
| 4120 | + }); |
| 4121 | + }; |
| 4122 | + } |
| 4123 | + } |
| 4124 | + } |
| 4125 | + }); |
4060 | 4126 | } |
4061 | 4127 |
|
4062 | 4128 | let UsernameElements = document.getElementsByClassName("Usernames"); |
|
0 commit comments