Path to included Javascript page

2019-07-14 22:17发布

How do I get the absolute or site-relative path for an included javascript file.

I know this can be done in PHP, (__file__, I think). Even for an included page, one can check the path (to the included file). Is there any way to have this self awareness in Javascript?

I know I can can get the page URL, but need to get the JS URL.

Eg. Javascript needs to modify the src of an image on the page. I know where the image is relative to the JavaScript file. I don't know where the Javascript is relative to the page.

<body>
  <img id="img0" src="">
  <script src="js/imgMaker/myscript.js"></script>
</body>

function fixPath(){ 
  $$("#img0")[0].set('src','js/imgMaker/images/main.jpg');
}

Please do not tell me to restructure my function - the example is simplified to explain the need. In the actual case, a Mootools class is being distributed and people can put it into whatever folder they want.

I would just read the src of the script element, but the class can be part of any number of javascript files, so I can't know what the element looks like.

7条回答
Lonely孤独者°
2楼-- · 2019-07-14 23:15

Found another approach, perhaps someone with more JS ninja can flush this out.

CSS stylesheet are able to find the node that called them using document.stylesheets.ownernode.

I could not find a similar call for javascript files.

But, in some cases, if one can include a CSS file together with the javascript, and give the first rule some unique identifier. One can loop through all stylesheets till they find the one with the identifier [if(document.stylsheets[i].cssRules[0] == thisIs:myCSS)], than use ownerNode to get the path of that file, and assume the same for the JS.

Convoluted and not very useful, but its another approach - might trigger a better idea by someone.

查看更多
登录 后发表回答