当页面出错时,如何获取页面的URL或运行函数?

时间:2017-10-06 04:22:28

标签: javascript jquery google-chrome

我使用window.location = 'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=5f9f5186993f64c91...';

打开一个页面

它会抛出一个错误(有时是403,有时是406-似乎是随机的)并且会阻止剩余的代码运行。

我可以在页面出错之前打开控制台并运行我想要运行的代码。

testURL= location.href; 
var trackId = testURL.match(new RegExp('/tracks/' + "(.*)" + '.json?')); 
alert(trackId[1]);

出于某种原因,当我运行它时,原始URL会更改为另一个,但它具有我需要的值。试试吧。

当我运行上面的window.location时,地址栏中会显示以下内容:https://api.soundcloud.com/tracks/330724405.json?client_id=5f9f5186993f64c91...

我需要的值是该网址中的330724405

所以,我需要的价值就在那里。我怎样才能以编程方式获得它?

PS用例是针对无法自行解决的URL的错误处理。这不是身份验证问题,特定的错误URL或故意禁用API。这是一个正确解析并返回JSON的URL(地址栏的变化也与故障类似!)您可以尝试查看成功的解决方案:http://api.soundcloud.com/resolve.json?url=https://soundcloud.com/radioopensource/stuart-schwartz-on-hurricane-history-in-the-caribbean&client_id=5f9f5186993f64c91...

1 个答案:

答案 0 :(得分:1)

这是未经测试的,但您可以使用XMLHttpRequest()和regex responseURL吗?也许擦洗this.status 403或406和readyState。

var trackUrl = "https://soundcloud.com/shinedownofficial/it-all-adds-up";
var xhr = new XMLHttpRequest();
xhr.open('GET', "http://api.soundcloud.com/resolve.json?url=" + trackUrl + " + client_id=5f9f5186993f64c91b1bb5cf43fe4b08", true);

xhr.onreadystatechange = function () {
  if (this.readyState == 4 && this.status == 200) {
    console.log(xhr.responseURL);
    'you can put your regex query here... 
  }
};

xhr.send();