我们可以在nativescript中从外部URL回发到Web视图并从回发中获取值吗?它是带有重定向uri的oauth2流,用户在本地webview中显示网站的外部链接,并从postback url获取令牌值。任何关于tut或博客的建议或指针?所有主要参与者都为此提供支持,它非常适用于oauth。
答案 0 :(得分:7)
这是我的main-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 :(得分:5)
您应该可以观看urlProperty
的更改。 E.g。
鉴于你有一个看起来像这样的观点:
<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.
});
}
答案 2 :(得分: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。您也可以通过深入了解他们的API参考创建iOS版本,然后将其转换为{N}适合。
答案 3 :(得分:0)
在IOS上你可以这样做:
args.object.ios.stringByEvaluatingJavaScriptFromString('YOUR_JAVASCRIPT_CODE');