为啥在Javascript里用window.location.href=‘a.html’语句不能实现网页跳转啊。浏览器还是显示原网页。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥在Javascript里用window.location.href=‘a.html’语句不能实现网页跳转啊。浏览器还是显示原网页。相关的知识,希望对你有一定的参考价值。

脚本是:
<script language="javascript1.2">
function isRegisterUserName(obj)

var value = obj.string.value; // 得到输入框中的值
var pattern = /^001|002|003$/; // 创建正则表达式对象
flag = pattern.test(value); // 测试匹配
if(flag==0)
alert("错误,请重新输入!");
return false;

window.location.href='index.html';
return true;

</script>
网页里的表单是:
<form name="form1" method="get" onSubmit="return isRegisterUserName(this)">
<input name="string" type="text">
<input type="submit" value="确定">
</form>
直接试着用window.location.href属性设置就可以实现自动跳转,但是为什么把它放在function里面就不行了呢?我想实现的是如果输入字符串正确(匹配)就跳转,否则就不跳转的功能

因为当输入正确时,isRegisterUserName return true,这样浏览器就会执行表单提交的默认动作 - 对于没有指明action的form,提交到当前页面(这可以通过点击确定后,地址栏变为“当前页地址?string=value"看出,因为method是get,所以表单键/值加在了地址后面)。把最后的return true改为return false就正常了。

虽然跳转代码是在return true的前面,看起来应该是先执行跳转,但是浏览器都不是这样实现的,所以只能用return false阻止掉浏览器的默认动作。追问

牛啊,不过我测试了所有主流浏览器以后发现chrome/opera/firefox什么的都可以跳转了,只有用IE9的时候,还是不行,就像你说的,地址栏最后出现了?string=value,然后就停在本界面了,这是为什么呢?

追答

IE9我试过,应该也可以的。你试的时候浏览器下面有没有黄色的提示说阻止了ActiveX或是Script,如果有的话选择允许执行。

参考技术A 在form里加个action不就可以了
<form name="form1" method="get" onSubmit="return isRegisterUserName(this)" action="'index.html">
<input name="string" type="text">
<input type="submit" value="确定">
</form>
参考技术B 要这行代码前加上alert("flag");测试下有没有执行到这行。 参考技术C window.location.href='index.html';
改成:
window.location="index.html";
href不要。

Cocos Creator 获取当前URL取参数

利用Javascript获取当前页的URL,这个问题起来好像很复杂,如果第一次去想这个问题,很多人估计又在琢磨到底又是哪个神一般的Javascript函数。

其实不是,Javascript获取当前页的URL的函数就是我们经常用来重定向的window.location.href。

比如如下函数: 

  1. <script>  
  2. var url=window.location.href;  
  3. var loc = url.substring(url.lastIndexOf(\'/\')+1, url.length);   
  4. alert("url="+url+",loc="+loc);  
  5. </script>  


如果当前页面的url为http://localhost:6666/myphp/mobile/pc1.php,那么其运行结果如下:

上面的函数同时展示如何获取当前页名称的做法。

获取利用window.location.href的变量获取整个url之后,要哪一部分的地址,利用substring,indexof等字符串处理函数对获取到的url进行处理,截取你想要的部分。

平时利用window.location.href做重定向,就是改变整个浏览器的url,

如果后面没有赋值,这就成了获取当前值的语句。

与document.getElementById("xx").value一样,你能够修改,就能够获取了。

 

刷新当前页
window.location.href=window.location.href;
或者
window.location.href="当前URL",例如

window.location.href="http://www.hao123.com/indexnt.html";

 

PS:如果不考虑window.location.href,可以直接使用
window.location.reload();刷新

以上是关于为啥在Javascript里用window.location.href=‘a.html’语句不能实现网页跳转啊。浏览器还是显示原网页。的主要内容,如果未能解决你的问题,请参考以下文章

为啥在PROJECT2007里用挣值分析时BCWS,BCWP和ACWP没有将三个资源类别里的成本资源计入呢?

Cocos Creator 获取当前URL取参数

quartus里用原理图的方法进行仿真时,为啥输出比输入延迟了一个时钟周期,有啥解决的办法吗?

我在mysql里用dos命令修改编码后为啥重启之后不能生效又变回原来的样子了??怎么才能保存设置??

在javascript里用函数求从1到任意正整数的和怎么写

php增加自动刷新当前页面