【问题标题】:How to find the script path from his own js file如何从自己的js文件中找到脚本路径
【发布时间】:2014-09-05 07:07:09
【问题描述】:

我想自己找自己的js文件的脚本路径。

所以我想要一个字符串“C:\files\MyProject\MyScripts\MyJavaScript.js”。

这怎么可能?

【问题讨论】:

  • 完全不清楚...
  • Get script path 的可能重复项
  • 为什么需要脚本路径?如果只是想知道js文件在哪里理解实现,可以搜索这个文件。

标签: javascript jquery


【解决方案1】:

你可以试试(Jquery):

var myScriptDetails = $('script');

myScriptDetails 将包含有关脚本的详细信息,包括其位置。

【讨论】:

  • myScriptDetails 将包含页面上链接的所有脚本的详细信息。这里的问题是脚本文件将如何找到它自己的位置。
【解决方案2】:

这是我的做法:

function ScriptPath() {
  var scriptPath = '';
  try {
    //Throw an error to generate a stack trace
    throw new Error();
  }
  catch(e) {
    //Split the stack trace into each line
    var stackLines = e.stack.split('\n');
    var callerIndex = 0;
    //Now walk though each line until we find a path reference
    for(var i in stackLines){
      if(!stackLines[i].match(/http[s]?:\/\//)) continue;
      //We skipped all the lines with out an http so we now have a script reference
      //This one is the class constructor, the next is the getScriptPath() call
      //The one after that is the user code requesting the path info (so offset by 2)
      callerIndex = Number(i) + 2;
      break;
    }
    //Now parse the string for each section we want to return
    pathParts = stackLines[callerIndex].match(/((http[s]?:\/\/.+\/)([^\/]+\.js)):/);
  }

  this.fullPath = function() {
    return pathParts[1];
  };

  this.path = function() {
    return pathParts[2];
  };

  this.file = function() {
    return pathParts[3];
  };

  this.fileNoExt = function() {
    var parts = this.file().split('.');
    parts.length = parts.length != 1 ? parts.length - 1 : 1;
    return parts.join('.');
  };
}

【讨论】:

    【解决方案3】:

    客户端您无法访问物理路径。你可以得到script标签的src属性。

    服务器端可以获取物理路径。例如(C#):

    Path.GetFullPath(path)
    

    【讨论】:

      【解决方案4】:

      要在 JavaScript 中查找 URL 的完整路径,请使用这个 location.href

      【讨论】:

        【解决方案5】:

        如果可以将服务器的绝对路径定义为常量变量,

        您可以通过从window.location.href 投射来做到这一点。从window.location.href 中删除主机前缀window.location.host 并使用服务器的绝对路径进行准备。

        试试:

         console.log(window.location.href);
        

        【讨论】:

          【解决方案6】:

          试试这个解决方案。我想这正是你想要的:)

          将此代码放入每个链接的脚本文件中

          var scriptEls = document.getElementsByTagName( 'script' );
          var thisScriptEl = scriptEls[scriptEls.length - 1];
          var scriptPath = thisScriptEl.src;
          var scriptFolder = scriptPath.substr(0, scriptPath.lastIndexOf( '/' )+1 );
          
          console.log(scriptPath +"  "+ scriptFolder );// you can save these in any variable also
          

          我用这个 HTML 代码对其进行了测试:

          <!DOCTYPE html>
          <html>
            <head> 
                <title>testing...</title>  
                <script type="text/javascript" src="test.js"></script> 
                <script type="text/javascript" src="js/test2.js"></script> 
                <script type="text/javascript" src="../test3.js"></script> 
              </head>  
              <body>
               content area
              </body>
          </html>
          

          在控制台中找到了这个输出:

          file:///D:/workspace/dbshell/www/test.js  file:///D:/workspace/dbshell/www/          test.js:6
          file:///D:/workspace/dbshell/www/js/test2.js  file:///D:/workspace/dbshell/www/js/   test2.js:6
          file:///D:/workspace/dbshell/test3.js  file:///D:/workspace/dbshell/                 test3.js:6
          

          特别感谢meouw.. 希望这会有所帮助..

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-11-02
            • 1970-01-01
            相关资源
            最近更新 更多