我有一段JS代码,它汇集了一个URL,然后设置了文档位置:
var url = 'pi_configure_mls.cgi?token=' + params.token + '&ml_sourcekey=' + key;
document.location = url;
当此代码运行时,它只是刷新页面(或者至少显示我正在使用的页面。)
奇怪的是,当我获取原始URL时,在我的控制台中手动输入:
document.location = url;
......它有效!我被带到了预期的页面。
我把它包装在try / catch中,确认URL完全相同,我不知道为什么会发生这种情况。
有没有人知道如何确定行为差异的原因?
更新1:
我正在记录来自通话的网址,它符合我的预期:
pi_configure_mls.cgi?token=NEH727&ml_sourcekey=edelivery&choosetags=bc_p_2
我还看到使用window.location
和window.top.location
时记录的新网址导航:
Navigated to https://www.some.site.of.mine.com/pi_select.cgi
在查看服务器上的python日志时,我看不到pi_configure_mls_cgi
的任何命中,但我确实看到它命中pi_select_cgi
所以我知道python不是这里的罪魁祸首。
更新2:
即使提供整个绝对URL也会失败(在代码中,而不是控制台):
window.top.location = 'https://www.some.site.of.mine.com/pi_configure_mls.cgi?token=NEH727&ml_sourcekey=edelivery&choosetags=bc_p_2'
更新3:
无论代码是什么,代码中的URL都不起作用。我确实在代码中尝试位置后看到了日志语句,就像它成功了一样:
try {
window.top.location = 'total_garbage!!!';
console.info('HEY WE WENT SOMEWHERE!'); //I see this logged
}
catch (e) {
console.info('this failed!' + e);
}
答案 0 :(得分:0)
尝试使用window.location
代替document.location
建议使用它: https://www.w3.org/TR/html/browsers.html#dom-location