Hi all, I'm new to roll20 API stuff and a relative novice to js but not completely inexperienced with it. So here is my situation... I wanted to hack into TrackerJacker to make it support custom Token Markers, the first thing I noticed was that it hard codes the token names from the default tokens in. I was able to find the correct values to add the new custom tokens (only a few to start testing with). After some fumbling around, I have them showing up in the Available Markers dialogue !tj -edit_status change %% ... I have noticed that custom token markers have a name and a tag, roll20 seems to use the tag which is a unique identifier in the form of `name::####` When I use this name in the statusMarkers array things show up as one would expect however the hrefs are gone from the images in the output. After many log() calls and slow tracing of the code it seems that everything looks correct up until where TrackerJacker returns the content (I assume back to roll20) to the sendChat() function. This is an exerpt of how the content looks just before it's sent out .... <div style="font-weight: bold; background-color: #FFF; border: 2px solid #000; box-shadow: rgba(0,0,0,0.4) 3px 3px; border-radius: 0.5em; margin-left: 2px; margin-right: 2px; padding-top: 5px; padding-bottom: 5px;"><div style="text-align: center; border-bottom: 2px solid black;"><span style="font-weight: bold; font-size: 125%">Available Markers</span></div> <div style="padding-left: 1px; padding-right: 1px; overflow: hidden;"><div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123890/TkC_M8_6X-UHy8euEymakQ/thumb.png?1425804412" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123890/TkC_M8_6X-UHy8euEymakQ/thumb.png?1425804412</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker red %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123890/TkC_M8_6X-UHy8euEymakQ/thumb.png?1425804412"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123890/TkC_M8_6X-UHy8euEymakQ/thumb.png?1425804412"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123884/pV7HJJVqORAhrOftpmVHUw/thumb.png?1425804373" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123884/pV7HJJVqORAhrOftpmVHUw/thumb.png?1425804373</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker blue %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123884/pV7HJJVqORAhrOftpmVHUw/thumb.png?1425804373"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123884/pV7HJJVqORAhrOftpmVHUw/thumb.png?1425804373"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123885/sbim5jTRF3XsuSs01ycKrg/thumb.png?1425804385" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123885/sbim5jTRF3XsuSs01ycKrg/thumb.png?1425804385</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker green %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123885/sbim5jTRF3XsuSs01ycKrg/thumb.png?1425804385"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123885/sbim5jTRF3XsuSs01ycKrg/thumb.png?1425804385"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123886/q0axCUI6vBsvDGOwFbsBXw/thumb.png?1425804393" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123886/q0axCUI6vBsvDGOwFbsBXw/thumb.png?1425804393</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker brown %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123886/q0axCUI6vBsvDGOwFbsBXw/thumb.png?1425804393"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123886/q0axCUI6vBsvDGOwFbsBXw/thumb.png?1425804393"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123889/xEOFbIKegEaFgN0vLnzG0g/thumb.png?1425804406" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123889/xEOFbIKegEaFgN0vLnzG0g/thumb.png?1425804406</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker purple %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123889/xEOFbIKegEaFgN0vLnzG0g/thumb.png?1425804406"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123889/xEOFbIKegEaFgN0vLnzG0g/thumb.png?1425804406"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123887/iyJDiq2Ngwuh6Si3-FLztQ/thumb.png?1425804400" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123887/iyJDiq2Ngwuh6Si3-FLztQ/thumb.png?1425804400</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker pink %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123887/iyJDiq2Ngwuh6Si3-FLztQ/thumb.png?1425804400"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123887/iyJDiq2Ngwuh6Si3-FLztQ/thumb.png?1425804400"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8123892/oL21nVVRUpDjGLaHXftstQ/thumb.png?1425804422" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123892/oL21nVVRUpDjGLaHXftstQ/thumb.png?1425804422</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker yellow %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8123892/oL21nVVRUpDjGLaHXftstQ/thumb.png?1425804422"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8123892/oL21nVVRUpDjGLaHXftstQ/thumb.png?1425804422"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/8093499/ca_OFvFT0w_MtJKY6c83Ew/thumb.png?1425688175" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8093499/ca_OFvFT0w_MtJKY6c83Ew/thumb.png?1425688175</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker dead %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/8093499/ca_OFvFT0w_MtJKY6c83Ew/thumb.png?1425688175"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/8093499/ca_OFvFT0w_MtJKY6c83Ew/thumb.png?1425688175"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779958/6J52OirwFlsN9_2aZnC4pA/icon.png?1599750469" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779958/6J52OirwFlsN9_2aZnC4pA/icon.png?1599750469</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker blinded::2779958 %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779958/6J52OirwFlsN9_2aZnC4pA/icon.png?1599750469"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779958/6J52OirwFlsN9_2aZnC4pA/icon.png?1599750469"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779959/aABGZno5HCNuH-ySLPH3VA/icon.png?1599750471" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779959/aABGZno5HCNuH-ySLPH3VA/icon.png?1599750471</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker absorbelements::2779959 %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779959/aABGZno5HCNuH-ySLPH3VA/icon.png?1599750471"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779959/aABGZno5HCNuH-ySLPH3VA/icon.png?1599750471"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779960/8nQaGrIU40-DF9iFfxbVOQ/icon.png?1599750473" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779960/8nQaGrIU40-DF9iFfxbVOQ/icon.png?1599750473</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker acid::2779960 %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779960/8nQaGrIU40-DF9iFfxbVOQ/icon.png?1599750473"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779960/8nQaGrIU40-DF9iFfxbVOQ/icon.png?1599750473"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779961/72UWes9zIMsrRPntgItYBA/icon.png?1599750474" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779961/72UWes9zIMsrRPntgItYBA/icon.png?1599750474</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker awareness-darkvision::2779961 %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779961/72UWes9zIMsrRPntgItYBA/icon.png?1599750474"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779961/72UWes9zIMsrRPntgItYBA/icon.png?1599750474"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779962/wRXVJuNiun7VWUvGP2RRhQ/icon.png?1599750476" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779962/wRXVJuNiun7VWUvGP2RRhQ/icon.png?1599750476</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker bardsong %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779962/wRXVJuNiun7VWUvGP2RRhQ/icon.png?1599750476"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779962/wRXVJuNiun7VWUvGP2RRhQ/icon.png?1599750476"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779964/M6r5shaNCnj8SsLAfDXKCA/icon.png?1599750479" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779964/M6r5shaNCnj8SsLAfDXKCA/icon.png?1599750479</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker bleeding %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779964/M6r5shaNCnj8SsLAfDXKCA/icon.png?1599750479"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779964/M6r5shaNCnj8SsLAfDXKCA/icon.png?1599750479"></img></a></div</a>> <div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><a style="font-size: 0px; background: url(<a href="https://s3.amazonaws.com/files.d20.io/images/2779965/bI1Y5_WGPecNFDyfOniPDA/icon.png?1599750481" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779965/bI1Y5_WGPecNFDyfOniPDA/icon.png?1599750481</a>) center center no-repeat; width: 21px; height: 21px" href="!tj -marker blessed %% test"><img style="text-align: center;" src="<a href="https://s3.amazonaws.com/files.d20.io/images/2779965/bI1Y5_WGPecNFDyfOniPDA/icon.png?1599750481"></img></a></div" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/2779965/bI1Y5_WGPecNFDyfOniPDA/icon.png?1599750481"></img></a></div</a>> <div style="clear:both;"></div></div><br><div style="border-top: 2px solid black; border-bottom: 2px solid black;"><span style="font-weight: bold; font-size: 125%">Taken Markers</span></div> <div style="padding-left: 1px; padding-right: 1px; overflow: hidden;"><div style="float: left; padding: 1px 1px 1px 1px; width: 25px; height: 25px;"><span class="showtip tipsy" title="test" style="width: 21px; height: 21px"><img style="text-align: center;"
src="<a href="https://s3.amazonaws.com/files.d20.io" rel="nofollow">https://s3.amazonaws.com/files.d20.io</a> images/2779963/qWXgDzjLo7Z956vLCvLQ-w/icon.png?1599750478"></img></span></div> <div style="clear:both;"></div></div></div> You'll notice here everything has an href in it's <a> element, however when inspecting the element as it is output to the browser all of the token markers using the name::#### format lose their hrefs. I'm assuming it's the double colons :: that is causing the problem but I've tried replacing them with entity encoding and even dereferencing to no avail. Am I missing something obvious or is there a way to make roll20 NOT require the unique identifier and use just the names as it does for it's default tokens? Also one more question, do I need to use or include something special to use Campaign(), specifically Campaign().get("token_markers") When I tried to use that to build the tokenMarkers dynamically I get an error TypeError: Cannot read property 'get' of undefined Sorry for the wall of text, Chuz