Простая HTML-страница с использованием SystemJS 0.21, которая загружает модуль JavaScript, скомпилированный из TypeScript.Веб-страница HTML имеет обработчик событий onclick=""
в стиле, который вызывает функцию, объявленную в файле модуля:
tsconfig.json
{
"compilerOptions": {
"module": "system",
"moduleResolution": "node"
}
}
Page.ts
export function onButtonClick( e: Event, btn: HTMLButtonElement ): boolean {
console.log( 'clicked!' );
return true;
}
Я использую SystemJS на HTML-странице веб-сайта (не SPA), например:
system.config.js
System.config( {
map: { /* ... */ },
packages: {
'/scripts/': { defaultExtension: 'js' }
}
} );
System.import( '/scripts/Page' );
Page.html
<html>
<head>
<script src="/scripts/system.src.js"></script>
<script src="/scripts/system.config.js"></script>
</head>
<body>
<button onclick="onButtonClick( event, this )">Click me and check the browser console</button>
</body>
</html>
Это не работает, потому что функция onButtonClick
определена в Page.js
как функция внутри модуля, что означает, что она не импортируется как свойство в глобальный (Window
) объект всценарии потребленияТаким образом, я получаю вывод в окне консоли:
Uncaught ReferenceError
: onButtonClick
не определено в HTMLButtonElement.onclick (Page.html: 8)
Так как же мне заставить <button onclick="onButtonClick( event, this )"
использовать function onButtonClick
в Page.ts
/ Page.js
?