我试图通过使用inappbrowser将一些文本和图像发布到Pinterest,但是它抛出错误“Parameter'mage_url'(值http:null)不是有效的URL格式。”
以下是示例代码。
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”,它在Web浏览器和系统浏览器(iPhone / Android)中运行良好。我使用eventListener“loadstart”来检查url,发现inappbrowser会自动添加一些不必要的额外参数,比如“创建下一个按钮”。
任何建议都会有所帮助。
答案 0 :(得分:1)
根据我们在评论中的对话,我认为问题在于不对您的查询参数进行编码。 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');
}