Is this possible?
myscripts = document.getElementsByTagName("script");
myscripts[0].init();
The Problem
i use highslide with several html-Windows (htmlExpand). Every have a script with a init()function. If one Window is opened, it's included init function should be called.
Because, there are now several init functions, i couldn't call it directly, because it call in most cases the wrong function.
hs.Expander.prototype.onAfterExpand = function (sender) {init()}
i have to call a function of a given script object
hs.Expander.prototype.onAfterExpand = function (sender) {
var content = this.content.getElementsByClassName("highslide-maincontent")[0];
var myscripts = content.getElementsByTagName("script");
for (var i = 0; i < myscripts.length; i ++){
if (typeof myscripts[i].init == "function"){
myscripts[i].init();
}
}
But how i could do it? This shouln't work.
myscripts[i].init();
So, how i could call a function of a given script-object
No this is not possible, because an
HTMLScriptElement, returned bydocument.getElementsByTagName("script")[0]in your code block, does not have aninit()method. Indeed it doesn't have any methods, nor does it inheritinit()from its parents up the chainHTMLElement,Element,Node, orEventTarget.I think you are trying to expose the
init()method on whatever JS objects are added in a particular script. But, you wouldn't do it that way. For that, you might want to look into something like: https://css-tricks.com/how-do-you-structure-javascript-the-module-pattern-edition/