关于导航的Natviescript webview

时间:2016-10-27 15:08:40

标签: webview nativescript uiwebviewdelegate angular2-nativescript

是否有"导航"在 nativescript 中的webview上的活动?

我已经在 Xamarin(c#)中完成了

Browser.Navigating += Myfunction

在nativescript中有这样的事件吗?我想这样做,如果我点击我的网站范围之外的链接,那么我希望设备打开该网址的网页,而不是在webview内导航。

2 个答案:

答案 0 :(得分:1)

为此,您可以处理WebView loadStartedEvent,并验证网址是否在您网站的范围内。如果不是,您可以设置新的URL到Webview,您将能够阻止用户进入不同的网页。我正在附上示例代码。

主page.xml

<Page xmlns:RL="nativescript-ripple" xmlns="http://schemas.nativescript.org/tns.xsd" navigatingTo="navigatingTo">
 <GridLayout>
     <WebView src="https://www.google.bg/" id="wv" />

 </GridLayout>
</Page>

主page.ts

import { EventData } from 'data/observable';
import { Page } from 'ui/page';
import { HelloWorldModel } from './main-view-model';
import {StackLayout} from "ui/layouts/stack-layout";
import {WebView, LoadEventData} from "ui/web-view"

// Event handler for Page "navigatingTo" event attached in main-page.xml
export function navigatingTo(args: EventData) {

  let page = <Page>args.object;

  var webview:WebView = <WebView> page.getViewById("wv");
    webview.on(WebView.loadStartedEvent, function (args: LoadEventData) {

        let message;
        console.log("url "+args.url.substring(0, 21));
        console.log("eventName "+args.eventName);
        console.log("navigationType "+args.navigationType);
        if(args.url.substring(0, 21) !== "https://www.google.bg/"){
          (<WebView>args.object).url="https://www.google.bg/";
          console.log("returns back");
        }
    });
}

希望这有帮助

答案 1 :(得分:0)

对于使用NativeScript-Vue的人,我只是这样做了:

<template>
  <Page actionBarHidden="true">
    <WebView :src="html" @loadStarted="onLoadStarted" />
  </Page>
</template>

<script>
export default {
  methods: {
    onLoadStarted (event) {
      console.log('navigation detected with destination :', event.url)
    }
  }
}
</script>

这样,您可以防止导航并做任何您想做的事情:)