Pinterest 发布在 inappbrowser 中不起作用
Pinterest posting not working inside inappbrowser
我正在尝试 post 使用 inappbrowser 将一些文本和图像发送到 Pinterest,但它抛出错误 "Parameter 'image_url' (value http:null) is not a valid URL format."
这是示例代码。
var pinterestUrl = "http://www.pinterest.com/pin/create/button/";
pinterestUrl += "?url=https://www.google.co.in/";
pinterestUrl += "&media=http://www.google.co.ma/images/srpr/logo1w.png";
pinterestUrl += "&description=Text Description";
var pinterest = window.open(pinterestUrl, '_blank');
如果我将代码从“_blank”更改为“_system”,它在网络浏览器和系统浏览器 (iPhone/Android) 中工作正常。我尝试使用 eventListener "loadstart" 检查 url,发现 inappbrowser 会自动添加一些不必要的额外参数,例如 "create next button".
任何建议都会有所帮助。
根据我们在评论中的对话,我认为问题出在没有对您的查询参数进行编码。 encodeURIComponent
方法用于在查询中使用时对特殊字符进行编码。编码整个 url 将不起作用,因为所有特殊字符都将被编码。您应该只对查询参数值本身进行编码。
var pinterestUrl = "http://www.pinterest.com/pin/create/button/";
pinterestUrl += "?url=" + encodeURIComponent("https://www.google.co.in/");
pinterestUrl += "&media=" + encodeURIComponent("http://www.google.co.ma/images/srpr/logo1w.png");
pinterestUrl += "&description=" + encodeURIComponent("Text Description");
var pinterest = window.open(pinterestUrl, '_blank');
这是另一种写同样东西的方法,可能更容易阅读。
function buildUrl(baseUrl, queryParams) {
return Object.keys(queryParams).reduce(function(url, key) {
return key + '=' + encodeURIComponent(queryParams[key]);
}, baseUrl + '?');
}
function shareToPinterest() {
var queryParams = {
url: "https://www.google.co.in/",
media: "http://www.google.co.ma/images/srpr/logo1w.png",
description: "Text Description"
};
var pinterestUrl = buildUrl("http://www.pinterest.com/pin/create/button/", queryParams);
var pinterest = window.open(pinterestUrl, '_blank');
}
我正在尝试 post 使用 inappbrowser 将一些文本和图像发送到 Pinterest,但它抛出错误 "Parameter 'image_url' (value http:null) is not a valid URL format."
这是示例代码。
var pinterestUrl = "http://www.pinterest.com/pin/create/button/";
pinterestUrl += "?url=https://www.google.co.in/";
pinterestUrl += "&media=http://www.google.co.ma/images/srpr/logo1w.png";
pinterestUrl += "&description=Text Description";
var pinterest = window.open(pinterestUrl, '_blank');
如果我将代码从“_blank”更改为“_system”,它在网络浏览器和系统浏览器 (iPhone/Android) 中工作正常。我尝试使用 eventListener "loadstart" 检查 url,发现 inappbrowser 会自动添加一些不必要的额外参数,例如 "create next button".
任何建议都会有所帮助。
根据我们在评论中的对话,我认为问题出在没有对您的查询参数进行编码。 encodeURIComponent
方法用于在查询中使用时对特殊字符进行编码。编码整个 url 将不起作用,因为所有特殊字符都将被编码。您应该只对查询参数值本身进行编码。
var pinterestUrl = "http://www.pinterest.com/pin/create/button/";
pinterestUrl += "?url=" + encodeURIComponent("https://www.google.co.in/");
pinterestUrl += "&media=" + encodeURIComponent("http://www.google.co.ma/images/srpr/logo1w.png");
pinterestUrl += "&description=" + encodeURIComponent("Text Description");
var pinterest = window.open(pinterestUrl, '_blank');
这是另一种写同样东西的方法,可能更容易阅读。
function buildUrl(baseUrl, queryParams) {
return Object.keys(queryParams).reduce(function(url, key) {
return key + '=' + encodeURIComponent(queryParams[key]);
}, baseUrl + '?');
}
function shareToPinterest() {
var queryParams = {
url: "https://www.google.co.in/",
media: "http://www.google.co.ma/images/srpr/logo1w.png",
description: "Text Description"
};
var pinterestUrl = buildUrl("http://www.pinterest.com/pin/create/button/", queryParams);
var pinterest = window.open(pinterestUrl, '_blank');
}