我们可以在 nativescript 中从外部 url 回发到 web 视图并从回发中获取值吗?这是带有重定向 uri 的 oauth2 流,用户在本机 webview 中显示网站的外部链接并从回发 url 获取令牌值。有什么建议或指向 tut 或博客吗?所有主要参与者都为此提供支持,并且非常用于 oauth。
问问题
3249 次
4 回答
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>
它一直写在文档中,我只是没有仔细看。希望它会帮助其他人。
于 2015-09-04T14:32:13.830 回答
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.
});
}
于 2015-09-04T08:37:42.683 回答
2
我知道这是旧的。但是下面的代码可以帮助很多人。
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 参考然后将其转换为 {N} 适用来创建 iOS 版本。
于 2017-08-15T00:35:14.397 回答
0
在 IOS 上,您可以这样做:
args.object.ios.stringByEvaluatingJavaScriptFromString('YOUR_JAVASCRIPT_CODE');
于 2017-10-16T15:20:14.687 回答