I’m now coming up against the issue you thought I was having before. Where after a [
is processed it’s evaluated. But if using a ]<script>
tag to do things it won’t be.
I don’t want evaluation to happen. So I could escape perchance specials to work right when returned to a code block, but they won’t be evaluated by scripts so they’ll still be there on the page. Or I could not escape perchance specials to work right from scripts, but they will be evaluated by code blocks which I don’t want. I just want plain text to always come out no matter what.
And there’s (seemingly) no way of knowing if it’s going to be evaluated at the end of a code block or not. And no way of just telling perchance “LEAVE THIS STRING ALOOOOOONE!!”
Is there anything I can do or is this just not possible in any way?
If not, I’d really super-duper like it if you could add a way. Even if it is as simple and “dumb” as setting a property on the object like .DONTEVALUATETHIS = true
or something. I’d really appreciate it.
Or even something like if it has .evaluateItem = "..."
it’ll automatically use that instead? Maybe? I tried that in case, and it didn’t work.
Honestly, I’m surprised this isn’t an issue for all sorts of plugins. Though maybe it is assumed that everyone only ever calls anything from code blocks and not scripts. Or people just don’t think about or have instances where the plugin returns HTML that includes specials that they want to stay plain text.
But as I’m doing my best to make my plugin bulletproof no matter how it’s used… it’s driving me insane 😅
You can use a backslash before special characters to treat them as plaintext. I have an import gen which is HTML, I will link it if you want
Yes, I’ve been doing that. The issue is that my plugin allows the user of the plugin to have a function that returns html. That html is then eventually returned by the plugin.
But depending on if it’s being called by a code block and injected that way, or being called by a script tag and being injected with
.innerHTML
… those backslash escapes will be stripped out, or they won’t. It behaves differently. Try it and see.The solution I added here in a comment works to detect it, but really it shouldn’t be necessary.