Как я мог сделать что-то вроде этого:
<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>
javascript
jquery
url
RayLoveless
источник
источник
"window.location.contains is not a function"
Ответы:
Вам нужно добавить свойство href и проверить
indexOf
вместоcontains
источник
window.location.hash
неwindow.location.href
. Просто поменяйте эти значения в функции OP..href.indexOf("franky")
может возвращать значение 0, если.href
начинается с "franky". Конечно, в этом случае это никогда не происходит, как.href
всегда начинается с протокола, обычно «http:» или «file:». Несмотря на это, вы должны ВСЕГДА использовать> -1,> = 0 или, мое предпочтение,! == - 1 при сравнении с результатомindexOf()
.сделал бы это. В качестве альтернативы вы можете использовать регулярное выражение:
источник
Вы бы использовали
indexOf
так:Также обратите внимание на добавление
href
для строки, иначе вы бы сделали:источник
вот так:
источник
window.location.href
псевдонимwindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.locationif
утверждение. Чтобы убедиться, что он имеет оба, вы можете использовать оператор AND, который находится&&
в Javascript:if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
чтобы проверить, имеет ли оно одно или другое значение, используйте оператор OR, который состоит из двух символов канала||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
не строка, но у нее естьtoString()
метод. Так что вы можете сделать это так:или
Из старых документов Mozilla :
источник
Путь регулярного выражения:
Или в простом утверждении вы можете использовать:
Я использую это, чтобы проверить, работает ли веб-сайт локально или на сервере:
Это проверяет, содержит ли href либо
192.168
либоlocalhost
AND, а затем:1337
.Как видите, использование regex имеет свои преимущества перед другими решениями, когда условие становится немного сложнее.
источник
if(/franky/.test(location.href)) { /* regex matched */ }
если я ничего не делаю со спичками.test
определенно чище, чемmatch
в этом случае.document.URL
должен получить васURL
иисточник
Попробуйте, это короче и работает именно так
window.location.href
:также, если вы хотите проверить предыдущий URL:
источник
document.referrer
совершенно не имеет отношения к вопросу.Легче становится
источник
Попробуй это:
источник
Попробуй indexOf
Вы также можете попробовать поиск (для регулярных выражений)
источник
источник
Мне нравится создавать,
boolean
а затем использовать это в логическойif
.источник
Вставьте в свой файл JS
источник
~
, поэтому я искал это: «~
это хитрость, чтобы превратитьindexOf()
найденное возвращаемое значение в правдивое (хотя оно не было обнаружено как ложное). Люди иначе используют его для побочного эффекта сокращения чисел ...» - stackoverflow.com/a/12299678/3917091Регулярные выражения будут более оптимальными для многих людей из-за границ слов
\b
или подобных устройств. Границы слова возникают , когда какой - либо из0-9
,a-z
,A-Z
,_
находятся на той стороне , на следующий матч, или когда буквенно - цифровой подключается к символьные строки или конец строки или начало.Если вы используете
if(window.location.href.indexOf("sam")
, вы получите совпаденияflotsam
иsame
, среди других слов.tom
будет соответствовать помидору и завтра, без регулярных выражений.Сделать это с учетом регистра так же просто, как удалить
i
.Кроме того, добавить другие фильтры так же просто, как
Давайте поговорим о
(?:\b|_)
. RegEx обычно определяет_
какword character
так, что это не вызывает границы слова. Мы используем это,(?:\b|_)
чтобы справиться с этим. Чтобы увидеть, найдет ли он\b
или_
по обе стороны строки.Другие языки, возможно, должны использовать что-то вроде
Все это проще, чем сказать
Варианты регулярных выражений в других языках поддерживают,
\p{L}
а javascript - нет, что значительно упростит задачу обнаружения иностранных символов. Что-то вроде[^\p{L}](filters|in|any|alphabet)[^\p{L}]
источник
(?#comments)
и свободно распространяемых# comments
как javascript. Тем не менее, этот не трудно читать. // Когда я использую сложное регулярное выражение в javascript, я сохраняю закомментированную копию, которую я могу редактировать.Предположим, у вас есть этот скрипт
И форма URL
www.localhost.com/web_form_response.html?text_input=stack&over=flow
Текст написан
<p id="response">
будетstack
источник
Будет хорошей практикой, если вы преобразуете строку в нижний или верхний регистр, так как метод indexof () чувствителен к регистру. Это будет, если ваш поиск не чувствителен к регистру, поэтому для поиска, который не учитывает регистр, он будет:
источник