我怎么能这样做呢:
<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>
我怎么能这样做呢:
<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>
当前回答
试试这个,它更短,工作完全像window.location.href:
if (document.URL.indexOf("franky") > -1) { ... }
如果你想检查之前的URL:
if (document.referrer.indexOf("franky") > -1) { ... }
其他回答
相反,我喜欢这种方法。
top.location.pathname.includes('franky')
它在很多情况下都有效。
如果将字符串转换为小写或大写,这将是一个很好的实践,因为indexof()方法是区分大小写的。
这将是如果你的搜索不区分大小写,你可以简单地使用indexOf()方法,而不将原始字符串转换为小写或大写:
var string= location.href;
var convertedString= string.toLowerCase();
if(convertedString.indexOf('franky') != -1)
{
alert("url has franky");
}
else
{
alert("url has no franky");
}
regex方式:
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 AND,后面跟着:1337。
如您所见,当条件变得有点棘手时,使用regex比其他解决方案更有优势。
正则表达式对于很多人来说是最优的,因为有单词边界\b或类似的设备。当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通常将_定义为单词字符,因此它不会导致单词边界。我们使用this (?:\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's 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}](过滤器| | |字母表)[^ \ p {1})
试试这个,它更短,工作完全像window.location.href:
if (document.URL.indexOf("franky") > -1) { ... }
如果你想检查之前的URL:
if (document.referrer.indexOf("franky") > -1) { ... }