2015-09-04 75 views
4

我們可以從外部URL回發到nativescript的web視圖並從回發中獲取值嗎?它是帶有重定向URI的oauth2流,用戶在本地webview中顯示網站的外部鏈接,並從回髮網址獲取令牌值。任何建議或指示嘖嘖或博客?所有主要參與者都爲此提供支持,並且非常適用於oauth。Nativescript Webview callback uri

回答

5

您應該能夠觀看urlProperty更改。例如。

假設你有一個觀點,看起來像這樣:

<Page loaded="loaded"> 
    <WebView id="myWebView" src="{{ url }}" /> 
</Page> 

然後你就可以觀測附加到的WebView和應對更改URL屬性是這樣的:

var webViewModule = require('ui/web-view'); 

function loaded(args) { 
    var page = args.object; 
    var webView = page.getViewById('myWebView'); 
    webView.on(webViewModule.WebView.urlProperty, function (changeArgs) { 
     console.dir(changeArgs); 
     // Do something with the URL here. 
     // E.g. extract the token and hide the WebView. 
    }); 
} 
+0

做每一次看火網址更改時? –

+0

webViewModule.WebView.urlProperty總是未定義...根據文檔有urlProperty屬性,但在調試期間它總是未定義..我錯過了什麼? –

+0

Hooray我得到它的工作你指着我在正確的方向...... –

6

這是我的主page.js所有的標記和價值我得到的函數內args.url

var vmModule = require("./main-view-model"); 
var webViewModule = require('ui/web-view'); 
function pageLoaded(args) { 

    var page = args.object; 
    page.bindingContext = vmModule.mainViewModel; 
    var webView = page.getViewById('myWebView'); 
    debugger; 
    //webView.url = 
    webView.on(webViewModule.WebView.loadFinishedEvent, function (args) { 
     alert(JSON.stringify(args.url)); 
    }); 
    webView.src = vmModule.mainViewModel.url; 

} 
exports.pageLoaded = pageLoaded; 

我的觀點是

<Page xmlns="http://www.nativescript.org/tns.xsd" loaded="pageLoaded"> 
    <GridLayout> 
     <WebView id="myWebView" /> 
    </GridLayout> 
</Page> 

它一直寫在那裏的文檔,我只是沒有仔細看它。希望它能幫助別人。

1

我知道這是舊的。但下面的代碼可以幫助很多人。

YOUR_WEB_VIEW_OBJECT.on(webViewModule.WebView.loadFinishedEvent, function (args) { 
    args.object.android.getSettings().setJavaScriptEnabled(true); 

    args.object.android.evaluateJavascript('(function() { console.log("LOGS"); return "MESSAGE"; })();', new android.webkit.ValueCallback({ 
     onReceiveValue: function (result) { 
      console.log(result); 
     } 
    })); 
}); 

此代碼目前適用於Android。您也可以創建iOS版本,方法是挖掘其API參考,然後將其轉換爲{N}適用。

0

在iOS上,你可以做這樣的:

args.object.ios.stringByEvaluatingJavaScriptFromString('YOUR_JAVASCRIPT_CODE');