1

webview에서 "navigate"이벤트가 nativescript입니까?Natviescript navview navigate

내가

Browser.Navigating += Myfunction 

자 마린 (C#을)에 그것을 한 적이 nativescript이 같은 어떤 경우가 있습니까? 나는 웹 사이트의 범위를 벗어난 링크를 클릭하면 장치가 해당 URL의 웹 페이지를 열고 webview 내부를 탐색하지 못하도록하고 싶습니다.

+0

은 내가 내 의견으로는하지만, 제대로 사건을 이해하는 것이 확실하지 않다 도움이 당신 'HtmlView'를 사용하여'URL'을 표시 할 수 있습니다. 링크를 탭하면 장치 브라우저로 리디렉션됩니다. '' –

+0

그렇지 않습니다. 나는 WebView가 있고 webview 안에있는 링크를 클릭하면 링크가 webview에서 내 사이트의 범위 내에 있는지 또는 외부 링크인지 감지하려고합니다. 외부 링크 인 경우 새 브라우저 인 텐트를 열고 싶습니다. . –

답변

1

이렇게하려면 WebViewloadStartedEvent을 처리하고 사이트의 범위에 있는지 여부를 확인할 수 있습니다. 그렇지 않다면 webview에 새 URL을 설정할 수 있으며 사용자가 다른 웹 페이지로 이동하는 것을 방지 할 수 있습니다. 나는 샘플 코드를 첨부하고있다.

메인에서 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"); 
     } 
    }); 
} 

희망이