3

我有一个网址:-

http://www.example.com/keyword/category.php

或者

http://www.example.com/keyword/category.php#4

我需要一个神奇的 abracadabra,它只给我这个 URL 中的页面名称作为类别

这是我尝试过的,它给出了category.php。但它有两个问题。它又丑又长,它给了我带有扩展名的文件名。

var currurl = window.location.pathname;
var index = currurl.lastIndexOf("/") + 1;
var filename = currurl.substr(index);

谢谢。

4

4 回答 4

11

只需将其变成如下函数:

function getPageName(url) {
    var index = url.lastIndexOf("/") + 1;
    var filenameWithExtension = url.substr(index);
    var filename = filenameWithExtension.split(".")[0]; // <-- added this line
    return filename;                                    // <-- added this line
}

然后当你需要使用它时:

var url = "http://www.example.com/keyword/category.php";
var myFilename = getPageName(url);

所有的“丑陋”都隐藏在一个函数中,主代码看起来又漂亮又干净!

于 2013-04-29T19:16:21.220 回答
2

对于像http://www.example.com/keyword/category.php?parametro=teste这样的查询字符串

function getPageName(url) {
     var index = url.lastIndexOf("/") + 1;
     var filenameWithExtension = url.substr(index);
     var filename = filenameWithExtension.split(".")[0]; 

     filename = filename.split("?")[0]; // <-- added this line

     return filename;                                  


}
于 2014-06-11T20:47:53.767 回答
2
function getPageName() {
    var index = window.location.href.lastIndexOf("/") + 1,
        filenameWithExtension = window.location.href.substr(index),
        filename = filenameWithExtension.split(".")[0];  

    return filename;                                     
}
于 2014-11-09T07:53:08.347 回答
2

注意:如果这样做.split('.'),您将错过许多 URL 的基本名称。


您可以找到最后一个正斜杠并提前搜索第一个.?&#捕获 URL 的变体。这可能相当于 PHP 的基本名称

function getBaseName(url) {
  if(!url || (url && url.length === 0)) {
    return "";
  }
  var index = url.lastIndexOf("/") + 1;
  var filenameWithExtension = url.substr(index);
  var basename = filenameWithExtension.split(/[.?&#]+/)[0];

  // Handle '/mypage/' type paths
  if(basename.length === 0) {
    url = url.substr(0,index-1);
    basename = getBaseName(url);
  }
  return basename ? basename : ""; 
}

并像这样使用它

var url = "http://www.example.com/keyword/category.php#4";
var file = getBaseName(url);

结果:

http://www.example.com/keyword/category.php#4    =>  "category"
http://www.example.com/keyword/category          =>  "category"  
http://www.example.com/keyword/category/         =>  "category"  
http://www.example.com/keyword/category?ver=1    =>  "category"  
http://www.example.com/keyword/category/?ver=1   =>  "category"
http://www.example.com/keyword/category#elem     =>  "category"

JSBin 演示

于 2015-06-04T15:30:53.657 回答