2017-05-05 120 views
0

我有一段JS代碼是組裝一個URL,然後設置文件位置:如何調試失敗document.location呼叫

var url = 'pi_configure_mls.cgi?token=' + params.token + '&ml_sourcekey=' + key; 
document.location = url; 

運行此代碼時,它只是刷新頁面(或至少說明在同一頁我在)

奇怪的是,當我把原始URL,並在我的控制檯手動輸入此:

document.location = url; 

...它的作品!我被帶到預期的頁面。

我在一個try/catch這個包裹,確認網址是完全一樣的,我不知道爲什麼會發生這種事。

有沒有人對如何確定行爲差異的原因任何提示?

更新1:

我記錄從通話的URL和它匹配我的期望:

pi_configure_mls.cgi?token=NEH727&ml_sourcekey=edelivery&choosetags=bc_p_2 

我使用window.locationwindow.top.location時也看到導航到新的URL登錄:

Navigated to https://www.some.site.of.mine.com/pi_select.cgi 

在查看我的python日誌服務器上,我沒有看到任何命中pi_configure_mls_cgi但我看到它擊中pi_select_cgi所以我知道蟒蛇是不是這裏的罪魁禍首。

更新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' 

UPDATE 3:

在沒有URL代碼將起作用,不管它是什麼。我看到logging語句在代碼中的位置的嘗試之後,如果它成功了:

try { 
    window.top.location = 'total_garbage!!!'; 
    console.info('HEY WE WENT SOMEWHERE!'); //I see this logged 
} 
catch (e) { 
    console.info('this failed!' + e); 
} 
+0

嘗試'console.log'的URL值,以確認它是你希望它是和使用'window.top.location = url'代替 – Tareq

+0

您可以使用類似小提琴手,看看是否有樣的要求是要什麼在電線外面。 – RJM

回答