url 包含“&”不适用于 google pagespeed api
url containing "&" does not work with google pagespeed api
我正在使用 Google pagespeed API 来测试我网站的 urls。只要 url 结构不包含任何“&”(查询字符串参数),它就可以正常工作。
示例(有效)
但是当我改变 url 这样的东西时,它不会显示正确的结果
不起作用的示例
1) http://www.example.com/?id=1234&sub=890
Api 忽略“&sub=890”部分和 returns http://www.example.com/?id=1234
的结果
正在查看APIJavascript代码:
function runPagespeed() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
var query = [
'url=' + URL_TO_GET_RESULTS_FOR,
'strategy=' + strategy,
'callback=runPagespeedCallbacks',
'key=' + API_KEY,
].join('&');
s.src = API_URL + query;
document.head.insertBefore(s, null);
}
所以看看这个函数,它表明 API 会将 "sub=890" 视为它自己的参数,因此它会忽略它。
当我在 https://developers.google.com/speed/pagespeed/insights/ 上使用 url http://www.example.com/?id=1234&sub=890 时,它工作正常并显示结果
注意:我正在使用 pagespeed 示例代码进行测试,它是 https://developers.google.com/speed/docs/insights/v2/first-app
任何帮助将不胜感激
您需要使用 encodeURIComponent
对 URI 进行编码,以便将参数视为输入。尝试以下
function runPagespeed() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
var query = [
'url=' + encodeURIComponent(URL_TO_GET_RESULTS_FOR),
'strategy=' + strategy,
'callback=runPagespeedCallbacks',
'key=' + API_KEY,
].join('&');
s.src = API_URL + query;
document.head.insertBefore(s, null);
}
我正在使用 Google pagespeed API 来测试我网站的 urls。只要 url 结构不包含任何“&”(查询字符串参数),它就可以正常工作。
示例(有效)
但是当我改变 url 这样的东西时,它不会显示正确的结果
不起作用的示例
1) http://www.example.com/?id=1234&sub=890
Api 忽略“&sub=890”部分和 returns http://www.example.com/?id=1234
的结果正在查看APIJavascript代码:
function runPagespeed() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
var query = [
'url=' + URL_TO_GET_RESULTS_FOR,
'strategy=' + strategy,
'callback=runPagespeedCallbacks',
'key=' + API_KEY,
].join('&');
s.src = API_URL + query;
document.head.insertBefore(s, null);
}
所以看看这个函数,它表明 API 会将 "sub=890" 视为它自己的参数,因此它会忽略它。
当我在 https://developers.google.com/speed/pagespeed/insights/ 上使用 url http://www.example.com/?id=1234&sub=890 时,它工作正常并显示结果
注意:我正在使用 pagespeed 示例代码进行测试,它是 https://developers.google.com/speed/docs/insights/v2/first-app
任何帮助将不胜感激
您需要使用 encodeURIComponent
对 URI 进行编码,以便将参数视为输入。尝试以下
function runPagespeed() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.async = true;
var query = [
'url=' + encodeURIComponent(URL_TO_GET_RESULTS_FOR),
'strategy=' + strategy,
'callback=runPagespeedCallbacks',
'key=' + API_KEY,
].join('&');
s.src = API_URL + query;
document.head.insertBefore(s, null);
}