4
我使用Cordova的inappbrowser插件在我的應用程序中顯示Web部件。在網站上有共享鏈接,例如對於WhatsApp的:如何優雅地中斷在Cordova的InAppBrowser中加載某個URL並在系統瀏覽器中打開它?
<a href="whatsapp://send?text=Check this out">Share on WhatsApp</a>
現在點擊inappbrowser這些鏈接的時候,它只是嘗試加載whatsapp://send?...
的URL,並顯示一個錯誤頁面。
我想做的事情是使用給定系統的瀏覽器/ URI處理程序以whatsapp://
開頭的打開鏈接,因此它類似於在系統瀏覽器中單擊此類鏈接時的行爲。要做到這一點,我做了以下內容:
urlChanged = function(event) {
// when a "whatsapp://" link is clicked, open it in the system browser
if(event.url.startsWith("whatsapp://")) {
window.open(event.url, "_system");
return;
}
}
// Add an "loadstart" event listener to the inappbrowser:
browser.addEventListener("loadstart", urlChanged);
到目前爲止,這一定程度上有效,但怪癖:
- 而當用戶點擊一個WhatsApp的鏈接事件立即觸發(檢查,通過發射一個警報),系統瀏覽器實際打開需要兩到三秒的時間。
- 在等待這些2-3秒並返回到應用程序時,用戶會看到一個inappbrowser錯誤頁面,指出
whatsapp://
鏈接無法打開(「未知url方案」)。
爲了減輕2點,我也試過在事件偵聽器的下面,都沒有成功(的行爲是完全一樣的):
urlChanged = function(event) {
if(event.url.startsWith("whatsapp://")) {
// stop loading the whatsapp:// link in inappbrowser
browser.stop();
// go back in history to display page where whatsapp:// link was on
browser.history.back();
window.open(event.url, "_system");
return;
}
}
browser.addEventListener("loadstart", urlChanged);
你可以指導我如何解決點1和2 ?
你解決了嗎?我面臨同樣的問題:( – vbotio
我面臨着同樣的問題,你使用的任何解決方案? –
我找到了一個可行的解決方案,它不是完美的,但爲我的目的而工作。 – fjc