Pinterest发布不在inappbrowser中工作

时间:2016-07-12 13:54:28

标签: cordova pinterest inappbrowser

我试图通过使用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会自动添加一些不必要的额外参数,比如“创建下一个按钮”。

任何建议都会有所帮助。

1 个答案:

答案 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');
}