488

我怎么能这样做:

<script type=“text/javascript”>$(文档).ready(函数(){if(window.location.contains(“franky”))//这不起作用,有什么建议吗?{alert(“您的url包含名称franky”);}});</script>
1
  • 4
    “window.location.contains不是函数” 评论 2019年9月3日14:34

21个答案21

重置为默认值
853

您需要添加href属性并选中索引属于而不是包含

<script src=“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js“></script><script type=“text/javascript”>$(document).ready(function()){如果(window.location.href.indexOf(“franky”)>-1){alert(“您的url包含名称franky”);}});</script>

7
  • 我有一个像这样的长URL,preview.tbwabox.co.nz/_v005/index.html#买车我想检查字符串是否有“buying-a-car but the script”不起作用? 评论 2015年7月9日2:16
  • 8
    @你找不到“买车”,因为你需要进去看看窗口.位置.哈希window.location.href窗口位置。只需在OP函数中交换这些值。 评论 2016年10月11日16:52
  • 2
    @J。W.为什么`>-1`我们不能使用`>0`?
    – 埃尔山
    评论 2017年7月19日10:58
  • 5
    @Elshan因为严格来说,.href.indexOf(“坦率”) 可以返回值0如果.href格式以“弗兰克”开头。当然,在这种情况下,它永远不会像.href格式总是以协议开头,通常是“http:”或“file:”。尽管如此,您应该始终使用>-1,>=0或,我的首选==-与的结果比较时为1索引(). 评论 2017年8月1日4:31
  • 我有一个值数组,想看看Url是否有任何值,并给出与条件匹配的数组的索引。我该怎么做?谢谢。
    – Si8合金
    评论 2018年10月11日19:24
130
if(window.location.href.indexOf(“franky”)!=-1)

也可以使用regexp:

if(/franky/.test(window.location.href))
  • 5
    这两个选项之间的利弊是对这个答案的一个很好的补充。
    – 克里斯
    评论 2019年1月7日19:21
  • 1
    但如果我使用正则表达式,没有人能够阅读它;) 评论 2019年7月12日5:41
  • const url=新url(window.location.href);常量路径=url.pathname;if(/^\/test($|\/|-)/.test(路径)){//do}这就是方法 评论 2023年4月28日14:39
38

你会用索引属于这样地:

if(window.location.href.indexOf(“franky”)!=-1){....}

还请注意添加了href公司对于字符串,否则您将执行以下操作:

if(window.location.toString().indexOf(“franky”)!=-1){....}
33

窗口.位置不是字符串,但它有一个toString()方法。所以你可以这样做:

(''+window.location).includes(“franky”)

window.location.toString().includes(“franky”)

旧Mozilla文档:

Location对象具有toString方法返回当前URL。您也可以将字符串分配给窗口位置。这意味着你可以使用window.location在大多数情况下都是字符串。有时,例如当你需要要对其调用String方法,您必须显式调用toString。

2
  • 4
    在Firefox 48中,String.prototype.contains()已被删除。仅使用String.prototype.includes()。请参见此处
    – 凯西C
    评论 2017年4月14日21:39
  • @CaseyC已更改。谢谢! 评论 2017年4月19日7:39
25

如此:

<script type=“text/javascript”>$(文档).ready(函数(){如果(window.location.href.indexOf(“cart”)>-1){alert(“您的url包含名称franky”);}});</script>
4
  • 调用window.location.indexOf和window.llocation.href.indexO有什么区别? 评论 2014年2月11日12:33
  • @starsplusplus没有任何区别。window.location.href窗口位置是的别名窗口.位置 developer.mozilla.org/en-US/docs/Web/API/Window.location公司 评论 2014年2月12日16:03
  • 上面的一个对我来说很好,但对于两个变量,如何检查它包含这两个值 评论 2016年7月11日12:16
  • 1
    @VinothNarayan你只需在如果声明。要确保两者都有,可以使用AND操作符,即&&在Javascript中:if(window.location.href.indexOf(“购物车”)>-1&&window.location.href.IndexOv(“盒子”)>-1)要检查它是否有一个值,请使用or运算符,它是两个管道字符|| if(window.location.href.indexOf(“购物车”)>-1||window.location.href.indexOf>-1) 评论 2016年10月11日16:55
12

正则表达式方式:

var匹配=!!location.href.match(/franky/)//现在是布尔值

或者在一个简单的语句中,您可以使用:

if(location.href.match(/franky/)){

我使用它来测试网站是在本地运行还是在服务器上运行:

location.href.match(/(192.168|localhost).*:1337/)

这将检查href公司包含其中之一192.168本地服务器AND后面是:1337.

正如您所看到的,当情况变得有点棘手时,使用正则表达式比其他解决方案具有优势。

  • 很好。我使用了if(window.parent.location.href.match(/\?/)){window.parent.location=window.partent.location.pathname;},它运行得很好。。。
    – 塔里克
    评论 2015年10月8日16:12
  • 或者,我觉得它使用起来更简洁if(/franky/.test(location.href)){/*regex匹配*/}如果我对比赛什么都不做。 评论 2016年6月11日18:03
  • 是 啊,测试绝对比比赛在这种情况下。 评论 2018年5月14日20:52
7

文档。统一资源定位地址应该给你统一资源定位地址

if(document.URL.indexOf(“searchtext”)!=-1) {//找到}其他{//没有}
6

试试这个,它更短了,工作原理与window.location.href窗口位置:

如果(document.URL.indexOf(“franky”)>-1){…}

此外,如果要检查上一个URL:

if(document.referrer.indexOf(“franky”)>-1){…}
1
  • @我没有投反对票,但是,哦,我不知道,可能很明显,因为你给出的答案与这个18个月前发布!此外,关于文档.参考与这个问题完全无关。
    – 知更鸟
    评论 2017年8月1日6:32
5

变得更容易

<script type=“text/javascript”>$(文档).ready(函数(){var url=窗口位置href;if(url.includes('franky'))//include()方法确定字符串是否包含指定的字符串。{alert(“url包含franky”);}});</script>
5

由于indexof()方法区分大小写,所以如果您将字符串转换为小写或大写,这将是一种很好的做法。

如果您的搜索不区分大小写,则可以简单地使用indexOf()方法,而无需将原始字符串转换为小写或大写:

var字符串=location.href;var convertedString=字符串.toLowerCase();if(convertedString.indexOf('franky')!=-1){警报(“url has franky”);}其他的{alert(“url没有franky”);}
5

相反,我喜欢这种方法。

top.location.pathname.includes(“模糊”)

它在许多情况下都有效。

试试这个:

<script type=“text/javascript”>$(文档).ready(函数(){ var regExp=/franky/g;var testString=“something.com/frankyssssddsdfjsdflk?franky”//在您的情况下,应该是window.location;if(regExp.test(testString))//这不起作用,任何建议。{                      alert(“您的url包含名称franky”);}             });         </script>

尝试indexOf

if(foo.indexOf(“franky”)>=0){...}

您还可以尝试搜索(正则表达式)

if(foo.search(“franky”)>=0){...}

窗口位置是一个包含多个方法和属性的对象,其中一些是与URL相关的字符串,因此您可以安全地搜索目标字符串:

const href=位置href;// "https://stackoverflow.com/questions/4597050/how-to-checkif-the-url-contains-a-given-string"//另一种选择const路径名=位置路径名;//“/questions/4597050/how-to-checkif-the-url-contains-a-given-string”//安全搜索字符串pathname.includs(“问题”);//真的href.includes(“问题”);//真的

Location对象

2

使用Window.location.href获取javascript中的url。它是一个属性,该属性将告诉您浏览器的当前URL位置。将属性设置为不同的值将重定向页面。

if(window.location.href.indexOf('franky')>-1){alert(“您的url包含名称franky”);}
1
  • 如何检查url是否为默认页面,字符串iam检查不可见。例如sample.com/homepage.aspx是我的页面,我正在查找字符串“homepage”。if((loc.toString().toUpperCase().indexOf('homepage')>-1)){}工作正常,但当我在sample.com上(仍然指向homepage.aspx)时,上述代码将无法工作。如何检查此场景?请帮忙! 评论 2016年4月15日5:12
2

我想创建一个布尔值然后在逻辑中使用如果.

//将未经验证的用户踢到登录页面var onLoginPage=(window.location.href.indexOf(“登录”)>-1);if(!onLoginPage){console.log('重定向到登录页面');window.location=“/login”;}其他{console.log('already on the login page');}
1

放入js文件

var url=窗口位置href;console.log(url);console.log(~url.indexOf(“#产品咨询”));if(~url.indexOf(“#product-consulation”)){console.log(“是”);//$('html,body').animate({//scrollTop:$('#header').offset().top-80// }, 1000);}其他{console.log(“NOPE”);}
1
  • 我不知道~,所以我查了一下:"~是一个转身的技巧索引()的找到了真实的回报值(同时将非基金视为虚假)。人们用它来表示截断数字的副作用。。。"-stackoverflow.com/a/1229678/3917091
    – 常规Jo
    评论 2017年11月3日16:06
1

由于单词的边界,正则表达式对很多人来说更为理想\b条或类似设备。单词边界出现在0-9,a-z型,A-Z(A-Z),_已打开那一边或当字母数字字符连接到行或字符串的结尾或开头时。

if(location.href.match(/(?:\b|_)franky(?:\t|_)))

如果您使用if(window.location.href.indexOf(“sam”),你会找到匹配的漂流物相同的等等。汤姆将匹配番茄和明天,没有regex。

使其区分大小写非常简单,只需删除.

此外,添加其他过滤器与

if(location.href.match(/(?:\b|_)(?:franky | bob | billy | john | steve)(??:\b | _)/i))

让我们谈谈(?:\b|_).RegEx通常定义_作为一个单词字符所以它不会造成单词边界。我们使用这个(?:\b|_)处理这个问题。看看它是否找到\b条_在绳子的两边。

其他语言可能需要使用以下内容

if(location.href.match(/([^\wxxx]|^)(?:franky | bob | billy | john | steve)([^\ wxxx]|$)/i))//其中xxx是您的语言的字母数字字符的字符表示形式(范围或文字)。

这一切都比说容易

varx=location.href//只是用来缩短代码x.indexOf(“-sam-”)||x.indexO(“-sam”)|| x.indexOf(“sam,”)||1x.indexOf(“/sam”)。。。//和其他比较以查看url是否以其结尾//更多适用于其他滤镜,如frank和billy

其他语言风格的正则表达式支持\p{L}但javascript没有,这将使检测外来字符的任务更加容易。有点像[^\p{L}](筛选|在|任何|字母表中)[^\p{L}]

2
  • 正则表达式唯一的缺点是“只写”(即不可能读取);) 评论 2017年11月6日22:30
  • @RayLoveless是的,在没有(?#条评论)和自由空间#评论比如javascript。然而,这本并不难读。//当我在javascript中使用复杂正则表达式时,我会保留一个注释副本,以便编辑lol。
    – 普通Jo
    评论 2017年11月7日2:42
1

这是我的密码

函数CheckUrl(url){var checkA=url.match(/(https | http):\/\/(.*?)\。(.*?)\.(.*?)(\/|'')/g);var checkP=url.match(/(https|http):\/\/(.*?)\。(.*?)(\/|'')/g);if(checkA!=null||checkP!=null){返回true;}其他{console.log(“错误”,“链接无效”);}返回false;}
1

您可以使用javascript字符串方法匹配

const url=window.location.href;const find=“问题”;const found=url.match(查找);console.log(url);if(找到!==空&找到[0]===找到){console.log(“您在问题页面中”);}其他{console.log('您不在问题页面中');}

0

假设你有这个脚本

<div><p id=“response”><p><脚本>var query=document.location.href.substring(document.rocation.hef.indexOf(“?”)+1);var text_input=查询split(“&”)[0].split(“=”)[1];document.getElementById('response').innerHTML=text_input;</script></div>

而url形式是www.localhost.com/web_form_response.html?text_input=堆叠覆盖=流动

写入的文本<p id=“响应”>堆栈

您的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.