Как проверить, содержит ли URL указанную строку?
Как я могу сделать что-то вроде этого:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.contains("franky")) // This doesn't work, any suggestions?
{
alert("your url contains the name franky");
}
});
</script>
Ответы
Ответ 1
Вам нужно добавить свойство href и проверить indexOf
вместо contains
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
if (window.location.href.indexOf("franky") > -1) {
alert("your url contains the name franky");
}
});
</script>
Ответ 2
if (window.location.href.indexOf("franky") != -1)
сделал бы это. Кроме того, вы можете использовать regexp:
if (/franky/.test(window.location.href))
Ответ 3
Вы использовали бы indexOf
следующим образом:
if(window.location.href.indexOf("franky") != -1){....}
Также обратите внимание на добавление href
для строки в противном случае:
if(window.location.toString().indexOf("franky") != -1){....}
Ответ 4
так:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("cart") > -1)
{
alert("your url contains the name franky");
}
});
</script>
Ответ 5
window.location
не является строкой, но имеет метод toString()
. Так что вы можете сделать это так:
(''+window.location).includes("franky")
или же
window.location.toString().includes("franky")
Из старых документов Mozilla:
Объекты местоположения имеют метод toString, возвращающий текущий URL. Вы также можете назначить строку для window.location. Это означает, что вы можете работать с window.location, как если бы это была строка в большинстве случаев. Иногда, например, когда вам нужно вызвать метод String, вы должны явно вызвать toString.
Ответ 6
Регулярный путь:
var matches = !!location.href.match(/franky/); //a boolean value now
Или в простом заявлении вы можете использовать:
if (location.href.match(/franky/)) {
Я использую это, чтобы проверить, запущен ли сайт локально или на сервере:
location.href.match(/(192.168|localhost).*:1337/)
Это проверяет, содержит ли href либо 192.168
, либо localhost
И за ним следует :1337
.
Как вы можете видеть, использование regex имеет свои преимущества перед другими решениями, когда условие становится немного сложнее.
Ответ 7
document.URL
должен получить URL
и
if(document.URL.indexOf("searchtext") != -1) {
//found
} else {
//nope
}
Ответ 8
Попробуйте это, оно короче и работает точно как window.location.href
:
if (document.URL.indexOf("franky") > -1) { ... }
также, если вы хотите проверить предыдущий URL-адрес:
if (document.referrer.indexOf("franky") > -1) { ... }
Ответ 9
Легче он получает
<script type="text/javascript">
$(document).ready(function () {
var url = window.location.href;
if(url.includes('franky')) //includes() method determines whether a string contains specified string.
{
alert("url contains franky");
}
});
</script>
Ответ 10
Попробуйте следующее:
<script type="text/javascript">
$(document).ready
(
function ()
{
var regExp = /franky/g;
var testString = "something.com/frankyssssddsdfjsdflk?franky";//Inyour case it would be window.location;
if(regExp.test(testString)) // This doesn't work, any suggestions.
{
alert("your url contains the name franky");
}
}
);
</script>
Ответ 11
Попробуйте indexOf
if (foo.indexOf("franky") >= 0)
{
...
}
Вы также можете попробовать выполнить поиск (для регулярных выражений)
if (foo.search("franky") >= 0)
{
...
}
Ответ 12
Мне нравится создавать boolean
, а затем использовать это в логическом if
.
//kick unvalidated users to the login page
var onLoginPage = (window.location.href.indexOf("login") > -1);
if (!onLoginPage) {
console.log('redirected to login page');
window.location = "/login";
} else {
console.log('already on the login page');
}
Ответ 13
Используйте Window.location.href, чтобы взять URL-адрес в javascript. это свойство, которое сообщит вам текущее местоположение URL-адреса браузера. Установка свойства на что-то другое приведет к перенаправлению страницы.
if (window.location.href.indexOf('franky') > -1) {
alert("your url contains the name franky");
}
Ответ 14
Вставьте файл js
var url = window.location.href;
console.log(url);
console.log(~url.indexOf("#product-consulation"));
if (~url.indexOf("#product-consulation")) {
console.log('YES');
// $('html, body').animate({
// scrollTop: $('#header').offset().top - 80
// }, 1000);
} else {
console.log('NOPE');
}
Ответ 15
Регулярные выражения будут более оптимальными для многих людей из-за границ слов \b
или подобных устройств. Границы Word встречаются, если на одной стороне следующего совпадения находятся какие-либо из 0-9
, a-z
, a-z
, _
или когда алфавитно-цифровой символ соединяется с линией или строкой или начинается.
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
Если вы используете if(window.location.href.indexOf("sam")
, вы получите совпадения для flotsam
и same
, между прочим. tom
будет соответствовать томату и завтра, без регулярного выражения.
Сделать регистр с учетом регистра так же просто, как удалить i
.
Кроме того, добавление других фильтров так же просто, как
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
Расскажите о (?:\b|_)
. RegEx обычно определяет _
как word character
, поэтому он не вызывает границы слова. Мы используем этот (?:\b|_)
, чтобы справиться с этим. Чтобы узнать, не находит ли он \b
или _
по обе стороны строки.
На других языках может потребоваться что-то вроде
if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language alphanumeric characters.
Все это проще, чем говорить
var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it
// more for other filters like frank and billy
Дружественные языки для регулярных выражений поддерживают \p{L}
, но javascript этого не делает, что облегчит задачу обнаружения иностранных символов. Что-то вроде [^\p{L}](filters|in|any|alphabet)[^\p{L}]
Ответ 16
Предположим, что у вас есть этот script
<div>
<p id="response"><p>
<script>
var query = document.location.href.substring(document.location.href.indexOf("?") + 1);
var text_input = query.split("&")[0].split("=")[1];
document.getElementById('response').innerHTML=text_input;
</script> </div>
И форма url www.localhost.com/web_form_response.html?text_input=stack&over=flow
Текст, записанный на <p id="response">
, будет stack