Hi DM,
In the strings from text.dat, I know you can use @exec:..@ to have it run a JS or Baja module, but is there a way to have it directly execute a block of JS code instead of executing a file? In my most recent update to DDMsgReader, it replaces the AreYouThere string with an empty string so that the contents of the screen aren't affected, but I was also thinking of having it execute some JS code so that I'd have some more control on where the string is displayed, etc. I could have it execute a separate .js with @EXEC@, but I'm not sure I'd want to add a separate .js just for that. I'm wondering if there's a way to have it directly execute a block of JS code when used with bbs.replace_text()?
Re: Replacing a text string to execute JS code directly
By: Nightfox to Digital Man on Wed Jan 29 2025 12:39 pm
Hi DM,
In the strings from text.dat, I know you can use @exec:..@ to have it run a JS or Baja module, but is there a way to have it directly execute a block of JS code instead of executing a file? In my most recent update to DDMsgReader, it replaces the AreYouThere string with an empty string so that the contents of the screen aren't affected, but I was also thinking of having it execute some JS code so that I'd have some more control on where the string is displayed, etc. I could have it execute a separate .js with @EXEC@, but I'm not sure I'd want to add a separate .js just for that. I'm wondering if there's a way to have it directly execute a block of JS code when used with bbs.replace_text()?
Not exactly as @-codes are pretty restrictive as to the contents (e.g. no space characters), so it'be pretty hard to put a code block within an @-code. One possibility is to define a JS property with a getter function and then you can invoke that getter function with the JS:propname @-code: https://wiki.synchro.net/custom:atcodes#external_content
Not exactly as @-codes are pretty restrictive as to the contents (e.g. no
space characters), so it'be pretty hard to put a code block within an
@-code. One possibility is to define a JS property with a getter function
and then you can invoke that getter function with the JS:propname @-code:
https://wiki.synchro.net/custom:atcodes#external_content
Here's an example:
Object.defineProperty(js.global, "prop", {
get : function () {
return "hello, world";
}
});
bbs.replace_text("Pause", "@JS:" + "prop@"); // @-code split for posting console.pause(); // will invoke the global 'prop' getter function
In this example, the "prop" getter function could do more stuff and just return an empty string if that's what's desired. --
Sysop: | Jon Justvig |
---|---|
Location: | Wichita, KS |
Users: | 4 |
Nodes: | 10 (0 / 10) |
Uptime: | 40:52:10 |
Calls: | 45 |
Calls today: | 45 |
Messages: | 36,349 |
Posted today: | 1 |