2016-07-12 15 views
0

inappbrowserを使用してPinterestにテキストと画像を投稿しようとしていますが、「パラメータ 'image_url'(値http:null)が有効なURL形式ではありません。Inappbrowser内でPinterestの投稿が機能しない

ここにサンプルコードを示します。

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'); 

私は、「_ SYSTEM」に「_blank」からコードを変更する場合は、Webブラウザで、システムブラウザ(iPhone/Androidの)で正常に動作しています。私はeventListener "loadstart"を使ってurlを検査して、inappbrowserが自動的に "次のボタンを作成する"のような不要な余分なパラメータを追加するのを発見しました。

提案が参考になります。

+1

それぞれのクエリパラメータで 'encodeURIComponent()'を使ってみましたか?クエリパラメータは、特殊文字がurl解析を妨げないようにエンコードする必要があります。 –

+0

あなたの提案に感謝のザック。私はすでにencodeURIComponentで試していますが、inappbrowerをエンコードした後にURLを読み込めず、エラー "webView:didFailLoadWithError - 要求されたURLがこのサーバーに見つかりませんでした" – sourav

+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'); 
} 
関連する問題