mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-08-16 03:31:45 +08:00
Added loadStarted event.
This commit is contained in:
@ -34,7 +34,7 @@ export var testLoadExistingUrl = function (done) {
|
|||||||
// <snippet module="ui/web-view" title="WebView">
|
// <snippet module="ui/web-view" title="WebView">
|
||||||
// ### Using WebView,
|
// ### Using WebView,
|
||||||
// ``` JavaScript
|
// ``` JavaScript
|
||||||
webView.on(webViewModule.knownEvents.finished, function (args: webViewModule.FinishedEventData) {
|
webView.on(webViewModule.knownEvents.loadFinished, function (args: webViewModule.LoadEventData) {
|
||||||
var message;
|
var message;
|
||||||
if (!args.error) {
|
if (!args.error) {
|
||||||
message = "WebView finished loading " + args.url;
|
message = "WebView finished loading " + args.url;
|
||||||
@ -60,7 +60,7 @@ export var testLoadInvalidUrl = function (done) {
|
|||||||
var webView = <webViewModule.WebView>views[0];
|
var webView = <webViewModule.WebView>views[0];
|
||||||
|
|
||||||
var errorReceived = false;
|
var errorReceived = false;
|
||||||
webView.on(webViewModule.knownEvents.finished, function (args: webViewModule.FinishedEventData) {
|
webView.on(webViewModule.knownEvents.loadFinished, function (args: webViewModule.LoadEventData) {
|
||||||
if (errorReceived) {
|
if (errorReceived) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
import application = require("application");
|
import application = require("application");
|
||||||
application.mainModule = "app/main-page";
|
application.mainModule = "app/main-page";
|
||||||
|
|
||||||
|
import trace = require("trace");
|
||||||
|
trace.enable();
|
||||||
|
trace.setCategories(trace.categories.concat(trace.categories.Debug));
|
||||||
|
|
||||||
application.start();
|
application.start();
|
@ -48,6 +48,8 @@ export function onPageLoaded(args: observableModule.EventData) {
|
|||||||
//viewModel.url = "sdfsdf://sdfwerfd";
|
//viewModel.url = "sdfsdf://sdfwerfd";
|
||||||
//viewModel.url = "http://www.sdfsdfsdfsdf.com/";
|
//viewModel.url = "http://www.sdfsdfsdfsdf.com/";
|
||||||
|
|
||||||
|
//viewModel.url = "https://api.instagram.com/oauth/authorize/?client_id=4e0171f9fcfc4015bb6300ed91fbf719&redirect_uri=http://localhost:2000/oauth&response_type=code";
|
||||||
|
|
||||||
backButton.isEnabled = false;
|
backButton.isEnabled = false;
|
||||||
forwardButton.isEnabled = false;
|
forwardButton.isEnabled = false;
|
||||||
reloadButton.isEnabled = false;
|
reloadButton.isEnabled = false;
|
||||||
@ -67,7 +69,12 @@ export function onReloadButtonTap(args: observableModule.EventData) {
|
|||||||
webView.reload();
|
webView.reload();
|
||||||
}
|
}
|
||||||
|
|
||||||
export function onWebViewFinished(args: webViewModule.FinishedEventData) {
|
export function onWebViewStartedLoading(args: webViewModule.LoadEventData) {
|
||||||
|
console.log("startedLoading: " + args.url);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function onWebViewFinishedLoading(args: webViewModule.LoadEventData) {
|
||||||
|
console.log("finishedLoading: " + args.url);
|
||||||
backButton.isEnabled = webView.canGoBack;
|
backButton.isEnabled = webView.canGoBack;
|
||||||
forwardButton.isEnabled = webView.canGoForward;
|
forwardButton.isEnabled = webView.canGoForward;
|
||||||
reloadButton.isEnabled = true;
|
reloadButton.isEnabled = true;
|
||||||
|
@ -4,6 +4,6 @@
|
|||||||
<Button text="→" col="1" tap="onForwardButtonTap" id="forwardButton"/>
|
<Button text="→" col="1" tap="onForwardButtonTap" id="forwardButton"/>
|
||||||
<TextField col="2" id="urlTextField" text="{{ url }}" />
|
<TextField col="2" id="urlTextField" text="{{ url }}" />
|
||||||
<Button text="↻" col="3" tap="onReloadButtonTap" id="reloadButton"/>
|
<Button text="↻" col="3" tap="onReloadButtonTap" id="reloadButton"/>
|
||||||
<WebView colSpan="4" row="2" id="webView" finished="onWebViewFinished" url="{{ url }}"/>
|
<WebView colSpan="4" row="2" id="webView" finishedLoading="onWebViewFinishedLoading" startedLoading="onWebViewStartedLoading" url="{{ url }}"/>
|
||||||
</GridLayout>
|
</GridLayout>
|
||||||
</Page>
|
</Page>
|
@ -4,7 +4,8 @@ import dependencyObservable = require("ui/core/dependency-observable");
|
|||||||
import proxy = require("ui/core/proxy");
|
import proxy = require("ui/core/proxy");
|
||||||
|
|
||||||
export module knownEvents {
|
export module knownEvents {
|
||||||
export var finished: string = "finished";
|
export var loadFinished: string = "loadFinished";
|
||||||
|
export var loadStarted: string = "loadStarted";
|
||||||
}
|
}
|
||||||
var urlProperty = new dependencyObservable.Property(
|
var urlProperty = new dependencyObservable.Property(
|
||||||
"url",
|
"url",
|
||||||
@ -43,14 +44,14 @@ export class WebView extends view.View implements definition.WebView {
|
|||||||
this._setValue(WebView.urlProperty, value);
|
this._setValue(WebView.urlProperty, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public _onFinished(url: string, error?: string) {
|
public _onLoadFinished(url: string, error?: string) {
|
||||||
|
|
||||||
this._suspendLoading = true;
|
this._suspendLoading = true;
|
||||||
this.url = url;
|
this.url = url;
|
||||||
this._suspendLoading = false;
|
this._suspendLoading = false;
|
||||||
|
|
||||||
var args = <definition.FinishedEventData>{
|
var args = <definition.LoadEventData>{
|
||||||
eventName: knownEvents.finished,
|
eventName: knownEvents.loadFinished,
|
||||||
object: this,
|
object: this,
|
||||||
url: url,
|
url: url,
|
||||||
error: error
|
error: error
|
||||||
@ -59,6 +60,17 @@ export class WebView extends view.View implements definition.WebView {
|
|||||||
this.notify(args);
|
this.notify(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public _onLoadStarted(url: string) {
|
||||||
|
var args = <definition.LoadEventData>{
|
||||||
|
eventName: knownEvents.loadStarted,
|
||||||
|
object: this,
|
||||||
|
url: url,
|
||||||
|
error: undefined
|
||||||
|
};
|
||||||
|
|
||||||
|
this.notify(args);
|
||||||
|
}
|
||||||
|
|
||||||
public _loadUrl(url: string) {
|
public _loadUrl(url: string) {
|
||||||
throw new Error("This member is abstract.");
|
throw new Error("This member is abstract.");
|
||||||
}
|
}
|
||||||
|
@ -24,6 +24,7 @@ class WebViewClientClass extends android.webkit.WebViewClient {
|
|||||||
|
|
||||||
if (this._view) {
|
if (this._view) {
|
||||||
trace.write("WebViewClientClass.onPageStarted(" + url + ", " + favicon + ")", trace.categories.Debug);
|
trace.write("WebViewClientClass.onPageStarted(" + url + ", " + favicon + ")", trace.categories.Debug);
|
||||||
|
this._view._onLoadStarted(url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ class WebViewClientClass extends android.webkit.WebViewClient {
|
|||||||
|
|
||||||
if (this._view) {
|
if (this._view) {
|
||||||
trace.write("WebViewClientClass.onPageFinished(" + url + ")", trace.categories.Debug);
|
trace.write("WebViewClientClass.onPageFinished(" + url + ")", trace.categories.Debug);
|
||||||
this._view._onFinished(url, undefined);
|
this._view._onLoadFinished(url, undefined);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,7 +42,7 @@ class WebViewClientClass extends android.webkit.WebViewClient {
|
|||||||
|
|
||||||
if (this._view) {
|
if (this._view) {
|
||||||
trace.write("WebViewClientClass.onReceivedError(" + errorCode + ", " + description + ", " + failingUrl + ")", trace.categories.Debug);
|
trace.write("WebViewClientClass.onReceivedError(" + errorCode + ", " + description + ", " + failingUrl + ")", trace.categories.Debug);
|
||||||
this._view._onFinished(failingUrl, description + "(" + errorCode + ")");
|
this._view._onLoadFinished(failingUrl, description + "(" + errorCode + ")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
16
ui/web-view/web-view.d.ts
vendored
16
ui/web-view/web-view.d.ts
vendored
@ -11,9 +11,14 @@ declare module "ui/web-view" {
|
|||||||
*/
|
*/
|
||||||
export module knownEvents {
|
export module knownEvents {
|
||||||
/**
|
/**
|
||||||
* Raised when web-view is completely loaded.
|
* Raised when the web-view has completely loaded an url.
|
||||||
*/
|
*/
|
||||||
export var finished: string;
|
export var loadFinished: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Raised when the web-view starts loading an url.
|
||||||
|
*/
|
||||||
|
export var loadStarted: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -67,13 +72,14 @@ declare module "ui/web-view" {
|
|||||||
reload();
|
reload();
|
||||||
|
|
||||||
on(event: string, callback: (data: observable.EventData) => void);
|
on(event: string, callback: (data: observable.EventData) => void);
|
||||||
on(event: "finished", callback: (args: FinishedEventData) => void);
|
on(event: "loadFinished", callback: (args: LoadEventData) => void);
|
||||||
|
on(event: "loadStarted", callback: (args: LoadEventData) => void);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Event data containing information for the finished event.
|
* Event data containing information for the loading events of a WebView.
|
||||||
*/
|
*/
|
||||||
export interface FinishedEventData extends observable.EventData {
|
export interface LoadEventData extends observable.EventData {
|
||||||
/**
|
/**
|
||||||
* Gets the url of the web-view.
|
* Gets the url of the web-view.
|
||||||
*/
|
*/
|
||||||
|
@ -18,13 +18,22 @@ class UIWebViewDelegateImpl extends NSObject implements UIWebViewDelegate {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public webViewShouldStartLoadWithRequestNavigationType(webView: UIWebView, request: NSURLRequest, navigationType: number) {
|
||||||
|
if (request.URL) {
|
||||||
|
trace.write("UIWebViewDelegateClass.webViewShouldStartLoadWithRequestNavigationType(" + request.URL.absoluteString + ", " + navigationType + ")", trace.categories.Debug);
|
||||||
|
this._owner._onLoadStarted(request.URL.absoluteString);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public webViewDidStartLoad(webView: UIWebView) {
|
public webViewDidStartLoad(webView: UIWebView) {
|
||||||
trace.write("UIWebViewDelegateClass.webViewDidStartLoad()", trace.categories.Debug);
|
trace.write("UIWebViewDelegateClass.webViewDidStartLoad(" + webView.request.URL + ")", trace.categories.Debug);
|
||||||
}
|
}
|
||||||
|
|
||||||
public webViewDidFinishLoad(webView: UIWebView) {
|
public webViewDidFinishLoad(webView: UIWebView) {
|
||||||
trace.write("UIWebViewDelegateClass.webViewDidFinishLoad(" + webView.request.URL + ")", trace.categories.Debug);
|
trace.write("UIWebViewDelegateClass.webViewDidFinishLoad(" + webView.request.URL + ")", trace.categories.Debug);
|
||||||
this._owner._onFinished(webView.request.URL.absoluteString);
|
this._owner._onLoadFinished(webView.request.URL.absoluteString);
|
||||||
}
|
}
|
||||||
|
|
||||||
public webViewDidFailLoadWithError(webView: UIWebView, error: NSError) {
|
public webViewDidFailLoadWithError(webView: UIWebView, error: NSError) {
|
||||||
@ -34,7 +43,7 @@ class UIWebViewDelegateImpl extends NSObject implements UIWebViewDelegate {
|
|||||||
}
|
}
|
||||||
|
|
||||||
trace.write("UIWebViewDelegateClass.webViewDidFailLoadWithError(" + error.localizedDescription + ")", trace.categories.Debug);
|
trace.write("UIWebViewDelegateClass.webViewDidFailLoadWithError(" + error.localizedDescription + ")", trace.categories.Debug);
|
||||||
this._owner._onFinished(url, error.localizedDescription);
|
this._owner._onLoadFinished(url, error.localizedDescription);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user