Custom CSS feature to inject custom JavaScript
-
@DennisSun The widget is called "HTML", just add a javascript-tag
-
@frissdiegurke well , I tried to involve javascript code in the html widget. But it didn't work. I can't even see the whole homepage after that.
-
@DennisSun Any errors on console?
this example works fine for me:
<script type="text/javascript"> console.log('hello world!'); </script>
-
@frissdiegurke no error showed in log.
here is what I added:
<script type="text/javascript">
var _bdhmProtocol = (("https:" == document.location.protocol) ? " https://" : " http://");
document.write(unescape("%3Cscript src='" + _bdhmProtocol + "hm.baidu.com/h.js%3F0da233db09b6a0886cd3f9d1a52e64d8' type='text/javascript'%3E%3C/script%3E"));
</script>The analytics code form baidu.com
-
yes,
document.write
replaces the whole site use sth like<script src='https://hm.baidu.com/h.js?0da233db09b6a0886cd3f9d1a52e64d8' type='text/javascript'></script>
this seems to be what the script is supposed to do (or
http://
if you don't use TLS). -
@frissdiegurke when using
document.write
you can avoid replacing the whole site, but it cannot be loaded asynchronously aka injected (as it needs to execute immediately on DOM build), which is most likely the case on most NodeBB pages@DennisSun if you want to have a dynamic the protocol, or maybe that string at the end, use something like
<script type="text/javascript"> (function() { var something = '0da233db09b6a0886cd3f9d1a52e64d8'; // or could be dynamically generated, I don't know // build your script tag var script = document.createElement('script'); script.type = 'text/javascript'; // that's useless, browsers ignore it, but whateves script.async = true; script.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'hm.baidu.com/h.js?' + something; // google analytics does that, this will find this actually script (unless loaded asynchronously, in that case it would find the last script tag on the page) // it should work in either case // var thisScriptTag = document.getElementsByTagName('script')[0]; // thisScriptTag.parentNode.insertBefore(script, s); // or you can just append it to the head var head = document.getElementsByTagName('head')[0]; head.appendChild(script); })(); </script>