2016-07-12 63 views
0

我想通過使用inappbrowser發佈一些文本和圖像到Pinterest,但它拋出一個錯誤「參數'image_url'(值http:null)不是一個有效的URL格式。Pinterest張貼不工作inappbrowser

以下是示例代碼。

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

你試過對每個查詢參數使用'encodeURIComponent()'嗎?查詢參數必須進行編碼,以便特殊字符不會混淆url解析。 –

+0

感謝Zack的建議。我已經嘗試使用encodeURIComponent,但在編碼inappbrower後無法加載URL並拋出錯誤「webView:didFailLoadWithError - 在此服務器上找不到請求的URL」 – sourav

+0

注意分享嘗試代碼?不編碼是最有可能的問題,但你可能做錯了編碼。 –

回答

1

根據我們在評論中的談話,我相​​信問題是沒有編碼您的查詢參數。在查詢中使用encodeURIComponent方法用於編碼特殊字符。編碼整個網址將不起作用,因爲所有特殊字符都將被編碼。您應該只編碼查詢參數值本身。

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