Script won't execute location.href
Script won't execute location.href
我的脚本发生了一些奇怪的事情,我不知道为什么它失败了。[edit]我解决了这个问题,但是仍然需要一个为什么会发生这种情况的答案。
脚本如下:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv='Content-Type'content='text/html;charset=utf-8'>
<noscript>
<meta http-equiv="refresh" content="0;URL=<?php echo $err_uri;?>"/>
</noscript>
<script>
function e_fout(y,z){
if(typeof tpag=='undefined')tpag='100';
if(typeof y=='undefined')y='999';
if(typeof z=='undefined')z='0';z=tpag+','+y+','+z;
// NAME: URL 1
var url=[window.top.location.protocol, '//',window.top.location.host, window.top.location.pathname,'error/?e='+z].join('');
window.location.href=url;
return false;
}
function go_test(){
// NAME: URL 2
var url=[window.top.location.protocol,'//',window.top.location.host, window.top.location.pathname, 'mytest/test.php'].join('');
alert(url); //<== FOR TEST PURPOSE (3)
window.location.href=url;
return false;
}
var gst=<?php echo ($go_test===true)?9:1;?>;
alert(gst); //<== FOR TEST PURPOSE (2)
if(gst===9){
go_test();
}
// *********************
alert('I'M STILL HERE...') //<== FOR TEST PURPOSE (3)
if(glo!==9){e_fout(1,119);}
</script>
</head>
:如果我运行这个脚本,它在Firefox中工作得非常好。它调用函数go_test()
,给出警报1和2。然后页面被重定向到URL 2
在IE, Chrome和Safari,然而,它不工作。它给我警报1和2,显示正确的URL 2,但它不是重定向页面。它继续警告3,然后调用函数e_fout()
,重定向到URL 1。
- 如果
if(glo!==9){e_fout(1,119);}
行被注释掉,我被重定向到正确的URL 2 - 如果
//*********
被</script><script>
取代,它在IE和Safari中工作正确,但仍然不在Chrome中。
有没有人知道为什么会发生这种情况以及如何修复它?
我解决了问题,但仍然不知道为什么会这样。我的解决方案是将if() statements
包装在一个函数中,将return false
添加到所有语句中,并在<head>
部分的末尾调用该函数。现在它在所有浏览器中都按预期执行。
var gst=<?php echo ($go_test===true)?9:1;?>;
function start(){
if(gst===9){
alert(gst); //<== FOR TEST PURPOSE (2)
go_test();
return false;
}
elseif(glo!==9){
e_fout(1,119);
return false;
}
alert('I'M STILL HERE...') //<== FOR TEST PURPOSE (3)
}
start();
</script>
</head>
尝试在不同的请求之间使用setTimeout。可能没有足够的时间打开第一页。
setTimeout(function(){
alert('hello');
}, 3000);
相关文章:
- 正在使用$location.path(.)路由ng视图
- window.location替换并传递URL历史记录条目中的变量
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- location.reload(true)崩溃浏览器选项卡
- window.location使用jquery mobile实现chrome跳转
- 骨干's Router.execute(callback,args,name)方法获取未定义的名称
- Windows.Open 在 window.Location 工作时不起作用
- 我可以使用location.href为变量生成url吗
- 如何将所有作业自定义到window.location.href
- window.location未刷新到现有URL
- 依次调用location.reload()和location.assign()
- 如果window.location.href.indexOf('player=1')添加样式
- 在$state.go之后执行$window.location.reload(true)
- javascript window.location在检查firebug时给了我一个错误的url路径
- Javascript location.reload()丢失参数(空$_GET)
- angularjs 中 $window.location.reload() 和 $route.reload() 之间的区
- 设置location.href在<a>点击
- Java脚本访问Location标头's OAuth 2的URL片段
- 在AJAX中使用window.location.replace'成功'回调
- Script won't execute location.href