2016-07-12 17 views
0

Ich versuche, einige Text und Bild auf Pinterest mit inappbrowser, aber es wirft einen Fehler "Parameter 'image_url' (Wert http: null) ist kein gültiges URL-Format."Pinterest Posting funktioniert nicht in inappbrowser

Hier ist der Beispielcode.

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

Es funktioniert gut in Web-Browser und in System-Browser (iPhone/Android), wenn ich den Code von "_blank" auf "_system" ändern. Ich habe versucht, die URL mit dem EventListener "loadstart" zu überprüfen und festgestellt, dass inappbrowser automatisch einige unnötige zusätzliche Parameter wie "create next button" hinzufügt.

Jeder Vorschlag wäre hilfreich.

+1

Haben Sie versucht, 'encodeURIComponent()' auf jedem Ihrer Abfrageparameter zu verwenden? Abfrageparameter müssen so codiert werden, dass Sonderzeichen die URL-Analyse nicht stören. –

+0

Danke Zack für Ihren Vorschlag. Ich habe bereits mit encodeURIComponent versucht, aber nach dem Enkodieren inappbrower nicht in der Lage, die URL zu laden und Fehler "webView: didFailLoadWithError - Die angeforderte URL wurde auf diesem Server nicht gefunden" – sourav

+0

Mind Sharing den Code aus dem Versuch? Nicht das Kodieren ist höchstwahrscheinlich das Problem, aber Sie haben möglicherweise die Kodierung falsch gemacht. –

Antwort

1

Pro meiner Konversation in den Kommentaren glaube ich, das Problem ist, ohne Ihre Abfrageparameter zu kodieren. Die -Methode wird zum Codieren von Sonderzeichen verwendet, wenn sie in Abfragen verwendet wird. Die Codierung der gesamten URL funktioniert nicht, da alle Sonderzeichen codiert werden. Sie sollten die Abfrageparameterwerte nur selbst codieren.

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

Hier ist eine andere Möglichkeit, die gleiche Sache zu schreiben, die ein wenig einfacher zu lesen sein könnte.

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