我正在尝试从客户端应用程序调用一些javascript。我的javascript从ES6转换为ES5。
这就是它的样子:
System.register([], function (_export) {
var _prototypeProperties, _classCallCheck, Welcome, UpperValueConverter;
return {
setters: [],
execute: function () {
"use strict";
_prototypeProperties = function (child, staticProps, instanceProps) { if (staticProps) Object.defineProperties(child, staticProps); if (instanceProps) Object.defineProperties(child.prototype, instanceProps); };
_classCallCheck = function (instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
Welcome = _export("Welcome", (function () {
function Welcome() {
_classCallCheck(this, Welcome);
this.heading = "Welcome to the Aurelia Navigation App!";
this.firstName = "John";
this.lastName = "Doe";
}
_prototypeProperties(Welcome, null, {
fullName: {
get: function () {
return "" + this.firstName + " " + this.lastName;
},
configurable: true
},
welcome: {
value: function welcome() {
alert("Welcome, " + this.fullName + "!");
},
writable: true,
configurable: true
}
});
return Welcome;
})());
}
};
});
欢迎使用我正在尝试调用的方法()。在被编译之前看起来像这样:
export class Welcome{
constructor(){
this.heading = 'Welcome to the Aurelia Navigation App!';
this.firstName = 'John';
this.lastName = 'Doe';
}
get fullName(){
return `${this.firstName} ${this.lastName}`;
}
welcome(){
alert(`Welcome, ${this.fullName}!`);
}
}
export class UpperValueConverter {
toView(value){
return value && value.toUpperCase();
}
}
我在这样的WPF webBrowser(C#)中调用它:
webBrowser.InvokeScript("Welcome.welcome");
我也尝试了welcome
,但这也不起作用。
我在想这个问题,我需要一些其他的东西,但我对JavaScript太新了,无法让它发挥作用。
如何从此javascript“类”之外调用welcome
函数?
答案 0 :(得分:2)
welcome
被声明为ES6代码中的实例方法。在能够调用方法之前,您需要创建Welcome
类的实例:
var welcome = new Welcome();
welcome.welcome();
不幸的是,使用WebBrowser
控件首先需要将一个命名方法注入全局范围来处理这段代码:
var scriptEl = webBrowser.Document.CreateElement("script");
var scriptDomElement = (IHTMLScriptElement)scriptEl.DomElement;
scriptDomElement.text = "function welcome() { var w = new Welcome(); w.welcome(); }";
var head = webBrowser.Document.GetElementsByTagName("head")[0];
head.AppendChild(scriptEl);
webBrowser.Document.InvokeScript("welcome");
答案 1 :(得分:1)
您可能正在寻找以下内容:
var instance = new Welcome();
instance.welcome(); // performs your alert.