I know this is old, but I developed a better solution because all of the above does not work for Async scripts. With some tweaking, the following script may cover almost all use cases. Heres what worked for me:
function getScriptName() { var error = new Error() , source , lastStackFrameRegex = new RegExp(/.+\/(.*?):\d+(:\d+)*$/) , currentStackFrameRegex = new RegExp(/getScriptName \(.+\/(.*):\d+:\d+\)/); if((source = lastStackFrameRegex.exec(error.stack.trim())) && source[1] != "") return source[1]; else if((source = currentStackFrameRegex.exec(error.stack.trim()))) return source[1]; else if(error.fileName != undefined) return error.fileName; }
Not sure of support in Internet Explorer, but works fine in every other browser I tested on.
jduncanator Nov 06 '13 at 8:44 2013-11-06 08:44
source share