定義用戶代理我用從科爾多瓦InAppBrowser插件,我想從我的應用程序(的Android,iOS的)打開網頁。但是,網站應該知道用戶是通過移動瀏覽器還是通過我的應用程序進入的。上InAppBrowser從科爾多瓦
我雖然從我的應用程序更改用戶代理將能夠工作。有沒有類似的解決方案?
我想就在我打開一個新窗口之前,我應該定義用戶通過我的應用程序進入了網站 。
window.open("http://test.example.com", "_blank", "location=no");
定義用戶代理我用從科爾多瓦InAppBrowser插件,我想從我的應用程序(的Android,iOS的)打開網頁。但是,網站應該知道用戶是通過移動瀏覽器還是通過我的應用程序進入的。上InAppBrowser從科爾多瓦
我雖然從我的應用程序更改用戶代理將能夠工作。有沒有類似的解決方案?
我想就在我打開一個新窗口之前,我應該定義用戶通過我的應用程序進入了網站 。
window.open("http://test.example.com", "_blank", "location=no");
當然,你可以這樣做:
window.open("http://test.example.com?entry=app","_blank","location=no");
// see how we added ?entry=app query string?
,然後在某處的網頁,你是開放的JavaScript,只是解析出「進入」參數,做任何具體的你的事想根據入門的價值來做。
如果你想在多個頁面上使用這個邏輯,你可能需要設置一些cookie或其他東西,因爲如果他們點擊InAppBrowser中的鏈接,它將丟失?entry=app
查詢字符串。
我想你可以嘗試在每次點擊InAppBrowser中的新鏈接時使用addEventListener("loadstart",fn)
來覆蓋URL。這樣,每次用戶點擊一個新頁面時,函數fn
就會被調用,在這裏您可以重寫URL。它可能是這樣的:
var ref = window.open("http://test.example.com?entry=app", "_blank", "location=no");
ref.addEventListener("loadstart", IABcallback);
function IABcallback(event){
if(event.url.substr(event.url.search(/entry/, '')) === "entry=app"){
// This is a lazy check for "entry" paramater, you should use a library or something
console.log("already have entry=app query string");
}else{
// open a new window with the same URL but add ?entry=app
ref = window.open(event.url+"?entry=app", "_blank", "location=yes");
// reattach this event listener since it is a new window
ref.addEventListener("loadstart", IABcallback);
}
}
這工作「好吧。」主要的問題是,每次點擊當前窗口頂部的鏈接時,它都會打開一個新的InAppBrowser窗口,使後退按鈕無法使用。您可以嘗試通過使用ref.close()
來關閉窗口然後重新打開它,但是我在解決此問題時遇到問題。我也嘗試使用窗口的自定義名稱(而不是「_blank」),但這也不起作用。所以,對不起,這是一個不完整的答案,但希望它可以給你一些想法。使用自定義查詢字符串初始化加載應用程序可能會容易得多,然後記住您是通過localStorage或cookie等途徑從InAppBrowser中獲取的。
謝謝。我想過的是同樣的事情,但我寧願通過更改用戶代理來實現(我認爲它更像這樣)。但是我發現用戶代理有幾個困難,並且添加這個參數絕對沒有問題。它取決於你想打開的網頁,在我的情況下,它是一個Jquery移動應用程序,所有的索引都在啓動時加載(無需存儲cookie)。 – 2013-05-08 10:29:24