zoukankan      html  css  js  c++  java
  • javascript中外部js文件取得自身完整路径得办法

    有时候我们需要引入一个外部js文件,这个js文件又需要用到自己的路径或者是所在的目录,别问怎么又这么变态的需求,开发做久了各种奇葩需求也就有了!

    有人第一时间想到的是location.href,可是哥哥,那个引用页面的路径啊。比如a.html:

    <html>
    <script src="/b/c.js"></script>
    </html>
    

    这样的话我们用location.href获取到的值是a.html文件本身的路径,并不是我们需要的c.js的路径。

    那怎么办?

    我先开始想到了一个方法,就是通过js的文件名去匹配,比如我写一个插件叫做dragondean.js,那么我可以将引用页(a.html)中所有的script标签获取到,然后通过匹配src属性中是否含有dragondean来获得我们需要的js文件路径。

    但是这样一来就有问题了:

    1.我们的插件dragondean.js在使用的时候不能被更名。

    2.一个插件的js文件重复引用会导致错误

    这种方式总是没有一种踏实的感觉...

    后来.....我看了一片文章:http://blog.sina.com.cn/s/blog_715fa5c00100pwrj.html

    里面提到的思路用到了浏览器对网页加载顺序的一个技巧,经过测试确实可行!

    原理就是网页文档在解析的时候一边加载一边解析,当解析到script的时候先下载src中的内容并解析或者解析script中间的内容,然后再往下解析。当解析到当前script的时候我们可以获取已经加载的所有script标签,最后一个就是我们需要得到的这个了。

    用到的方法代码如下:

    获取自身的完整路径:

    function getMySrc(){
        var scriptSrc = document.getElementsByTagName('script')[document.getElementsByTagName('script').length -1].src;
        return scriptSrc;
    }

    获得自身的文件名:

    function getMyScriptName(){
        var scriptSrc = document.getElementsByTagName('script')[document.getElementsByTagName('script').length -1].src;
        var jsName = scriptSrc.split('/')[scriptSrc.split('/').length-1];
        return jsName;
    }

    获得自身所在的目录路径:

    function getMyPath(){
        var scriptSrc = document.getElementsByTagName('script')[document.getElementsByTagName('script').length -1].src;
        var jsName = scriptSrc.split('/')[scriptSrc.split('/').length-1];
        return scriptSrc.replace(jsName,'');
    }

    这些内容都是借鉴的前面那篇博文的,只不过做了一个细化!再次感谢原文作者!

  • 相关阅读:
    XUartPs_SetFifoThreshold
    函数指针 与 指针函数 的 区别
    zynq SPI 参数配置
    20199118《网络攻防实践》第三周作业
    maven项目将第三方jar包打入自己的jar中
    springboot项目简单的实现操作多数据库源
    WebSocket简单的应用
    怎么使用bat脚本更改本地受保护的hosts文件
    Spring Boot配置ssl证书启用HTTPS协议
    控制animation暂停:animation-play-state
  • 原文地址:https://www.cnblogs.com/dragondean/p/js-self-path.html
Copyright © 2011-2022 走看看