Если у вас есть работающее решение PHP, я не уверен, почему вы хотите преобразовать его в JavaScript.В любом случае, PHP - лучшее место, чтобы сделать это.
В любом случае, чтобы объяснить, что делает ваш JS, если у вас есть такой URL:
http://www.somedomain.com/somepage.php?someparam=234#123123
itвыбросит что-нибудь после "?"и / или "#", и все, что находится перед последним "/", сохраняя только тот бит, который я выделил жирным шрифтом.
Если ваш URL не содержит символов "/", например, у вас просто есть«www.somedomain.com», тогда он вернет всю строку, он не может придумать для вас имя файла.
Как это работает: сначала обратите внимание, что aString.indexOf(param)
возвращает -1, если aSring
делаетне содержит param
, в противном случае возвращается индекс первого экземпляра.Таким образом, второй аргумент substring
устанавливается в одно из двух значений в зависимости от того, что находит indexOf
.Следующее:
var url = document.location.href;
url = url.substring(0, (url.indexOf("#") == -1) ? url.length : url.indexOf("#"));
начинается с полного URL, затем проверяется, есть ли символ «#» - если его нет, substring
принимает всю строку (от 0 до url.length
), в противном случае строка принимает значение, но не включая "#".Тогда:
url = url.substring(0, (url.indexOf("?") == -1) ? url.length : url.indexOf("?"));
Та же идея, но с "?".Если нет ни одной, сохраните всю строку, в противном случае держите все до, но не включая «?».Затем:
url = url.substring(url.lastIndexOf("/") + 1, url.length);
Берет все, начиная с символа после последнего символа "/" (который будет первым символом ("-1 + 1"), если такового не существует), до конца строки.