Trebakuntza
Ikasketa-txokoa
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Arakatzailea ez da onartzen jada.
Bertsio-berritu Microsoft Edge-ra etekin handiena ateratzeko eginbide berrienei, segurtasun-eguneratzeei eta laguntza-teknikoari.
Aquí se muestra cómo usar los tipos y miembros de WinRT desde el código JavaScript del lado web en una aplicación WebView2, al llamar al código WinRT de lado nativo desde el código del lado web.
La herramienta de proyección js de WinRT de WebView2 (wv2winrt) convierte de WinRT a construcciones de lenguaje JavaScript como se indica a continuación.
Construcción del lenguaje WinRT | Representación de JavaScript | Notas |
---|---|---|
UInt8 , Int16 , UInt16 , Int32 , UInt32 , Int64 , UInt64 , Single , Double |
Number |
|
Char , String |
String |
Una instancia de JavaScript String se convierte en una instancia de WinRT String . |
Boolean |
Boolean |
|
Windows.Foundation.DateTime Estructura |
Date |
|
Windows.Foundation.TimeSpan Estructura |
Number |
|
Guid |
String |
Una instancia de JavaScript String que contiene una representación de cadena de un UUID (con o sin delimitación { y } llaves) se convierte en el UUID correspondiente. Un UUID se convierte en su representación de cadena, con caracteres delimitadores { y } llaves al principio y al final. Para obtener información sobre UUID, consulte RFC 4122. |
IVector<T> , IVectorView<T> , IObservableVector<T> |
Array y el objeto JavaScript |
Si una RuntimeClass instancia implementa interfaces vector , se representa en JavaScript como el objeto habitual que se describe a continuación, pero también actuará como una matriz de JavaScript. Las lecturas y escrituras se realizan en directo en el objeto vector de WinRT subyacente. |
IMap<K,V> , IMapView<K,V> , IObservableMap<K,V> |
JavaScript (objeto) | Si una RuntimeClass instancia implementa interfaces map , se representa en JavaScript como el objeto habitual descrito a continuación, pero también tiene propiedades con el nombre y los valores del objeto de mapa de WinRT subyacente. Las lecturas y escrituras se realizan en directo en el objeto de mapa de WinRT subyacente. |
Enum |
JavaScript (objeto) | Un tipo de enumeración se representa como un objeto JavaScript. Cada valor de enumeración es una Number propiedad del objeto JavaScript. |
Struct |
JavaScript (objeto) | Un Struct tipo se convierte en un objeto JavaScript que tiene nombres de propiedad que corresponden a los nombres de miembro de Struct tipo. Se trata de una conversión bidireccional. |
Namespace |
JavaScript (objeto) | Un espacio de nombres se representa como un objeto JavaScript que tiene una propiedad para cualquier espacio de nombres secundario, tipos de enumeración o RuntimeClass . El espacio de nombres puede tener 0, 1 o muchos espacios de nombres secundarios, enumeraciones o runtimeclasses, y cada espacio de nombres secundario individual, enumeración y runtimeclass obtiene su propia propiedad. |
Class |
JavaScript (objeto) | Una RuntimeClass clase se convierte en un objeto JavaScript que tiene los mismos métodos, propiedades y eventos. |
Interface |
JavaScript (objeto) | Una RuntimeClass interfaz se convierte en un objeto JavaScript que tiene los mismos métodos, propiedades y eventos. No se admite la implementación de una interfaz en JavaScript. |
Miembro estático de clase | Propiedad del objeto JavaScript | Véalo a continuación. |
Constructor de clase | Constructor y función de JavaScript | Véalo a continuación. |
Al pasar objetos de JavaScript a objetos host:
Date
deben pasarse a objetos host como VT_DATE
, establezca la propiedad true
del shouldSerializeDates
objeto host en . De forma predeterminada, Date
los objetos se pasan al host como string
, mediante JSON.stringify
.array
, establezca la propiedad true
del shouldPassTypedArraysAsArrays
objeto host en . De forma predeterminada, las matrices con tipo se pasan al host como IDispatch
.Vea también:
Una clase en tiempo de ejecución que tiene propiedades estáticas, métodos estáticos o eventos estáticos se representa como una propiedad del espacio de nombres. Cada propiedad estática, método estático y evento estático se representa como una propiedad en ese objeto JavaScript de runtimeclass.
Por ejemplo, para el método Windows.Foundation.Uri.EscapeComponent
estático de la API de WinRT:
Windows.Foundation
es el espacio de nombres.Uri
es runtimeclass.EscapeComponent
es el método estático.En JavaScript, la representación tiene un aspecto similar: : chrome.webview.hostObjects.Windows.Foundation.Uri.EscapeComponent
EscapeComponent
es un método de JavaScript que es una propiedad en el objeto JavaScript para runtimeclass Uri
.Uri
es una propiedad del objeto JavaScript para el espacio de Foundation
nombres.Por ejemplo, para llamar al método Windows.Foundation.Uri.EscapeComponent
estático , llame a:
`chrome.webview.hostObjects.Windows.Foundation.Uri.EscapeComponent("example");`
El objeto de espacio de nombres de JavaScript aquí es chrome.webview.hostObjects.Windows.Foundation
.
Un constructor para una RuntimeClass
clase se representa como una sola propiedad en un objeto JavaScript al que se puede llamar de dos maneras:
Por ejemplo, para crear un nuevo Windows.Foundation.Uri
objeto, puede llamarlo como constructor mediante new
:
`let uri = new chrome.webview.hostObjects.Windows.Foundation.Uri("https://example.com/");`
O bien, llámalo como una función, sin new
:
`let uri = chrome.webview.hostObjects.Windows.Foundation.Uri("https://example.com/");`
El objeto de espacio de nombres de JavaScript aquí es chrome.webview.hostObjects.Windows.Foundation
.
Si un nombre de método winRT está sobrecargado para más de un método, llamar a ese nombre de método desde JavaScript llamará a la sobrecarga que tiene el número coincidente de parámetros.
Si hay más de una sobrecarga que tiene un número coincidente de parámetros, se llamará a la primera sobrecarga que se encuentra en los metadatos.
Si un método WinRT tiene out
parámetros, al llamar a ese método desde JavaScript, el resultado devuelto será un objeto JavaScript que una propiedad para cada out
parámetro. Si el método tiene un tipo que novoid
es devuelto, el objeto de resultado devuelto también tendrá una propiedad denominada value
que contiene el valor devuelto del método.
Al llamar a un método WinRT que tiene out
parámetros, los out
parámetros se omiten en la lista de parámetros de la llamada al método (a menos que sean de tipo matriz). Por ejemplo, supongamos que un método WinRT que tiene out
parámetros y un tipo que novoid
es devuelto se define de la siguiente manera, mediante MIDL3:
String MethodWithOutParams(String stringParam1,
out Int32 intParam2,
out Int32 intParam3,
String stringParam4);
Al llamar a ese método desde JavaScript, omita los out
argumentos:
let result = object.MethodWithOutParams("stringParam1",
"stringParam4");
A continuación, para leer el valor devuelto del método WinRT, lea la value
propiedad en el objeto JavaScript result
. Para leer los parámetros del out
método WinRT, lea las propiedades con nombre correspondientes en el objeto JavaScript result
:
console.assert(result.value == "return value");
console.assert(result.intParam2 == 1);
console.assert(result.intParam3 == 2);
Para los parámetros de tipo out
de matriz, la matriz debe pasarse a la lista de parámetros del método al llamar al método . Para un tipo que novoid
es devuelto, la matriz de resultados reemplazará la matriz que se pasa para la llamada al método. Para el void
tipo de valor devuelto, la matriz de resultados será el resultado de la llamada al método.
// Both methods update input array values to index values
String NonVoidMethodWithArrayOutParam(out Int[] intArrayParam);
Void VoidMethodWithArrayOutParam(out Int[] intArrayParam);
let input_array1 = [0, 0, 0];
let result1 = object.NonVoidMethodWithArrayOutParam(input_array1);
console.assert(input_array1 == [0, 1, 2])
let input_array2 = [0, 0, 0];
let result2 = object.VoidMethodWithArrayOutParam(input_array2);
console.assert(result2 == [0, 1, 2]);
Si se pasan matrices con tipo como parámetros de matriz out
, chrome.webview.hostObjects.options.shouldPassTypedArraysAsArrays
debe establecerse en true
.
Vea también:
Trebakuntza
Ikasketa-txokoa
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization