如何调试失败的document.location调用

时间:2017-05-05 19:16:35

标签: javascript jquery

我有一段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.locationwindow.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);
}

1 个答案:

答案 0 :(得分:0)

尝试使用window.location代替document.location

建议使用它: https://www.w3.org/TR/html/browsers.html#dom-location