Вызов функции Deno из WebView. Как?

#javascript #webview #deno

#javascript #webview #deno

Вопрос:

Я нашел этот действительно классный пример онлайн о том, как запустить WebView с помощью Deno.

Возможно ли вызвать функцию внутри вашего приложения Deno из элемента HTML button, размещенного внутри шаблона html?

Взгляните:

 // Importing the webview library
import { WebView } from "https://deno.land/x/webview/mod.ts";
// Creating an HTML page
let html = `
  <html>
    <body>
        <h1>Hello from deno v${Deno.version.deno}</h1>
        <button type="button" onclick="test()">RUN TEST FUNCTION</button>
    </body>
  </html>
`;

function test() {

  console.log('You really can do that!');

}

// Creating and configuring the webview
const webview = new WebView({
  title: "Deno Webview Example",
  url: "data:text/html,"   html,
  // url: 'https://www.google.com',
  width: 768,
  height: 1024,
  resizable: true,
  debug: true,
  frameless: false
});
// Running the webview
webview.run();
  

Для запуска этого кода вам необходимо:

 deno run -A --unstable webview.ts
  

Комментарии:

1. Похоже, что на эту дату 2-сторонние привязки deno еще не существуют.

2. Ну да, создав сервер https и прослушивая любой запрос, который хочет ваш WebView клиент. В противном случае я действительно понятия не имею, чего бы вы достигли, делая это.

3. Вы получаете возможности веб-приложения на рабочем столе с помощью очень хорошего движка рендеринга, кодирующего на Javascript и HTML.

Ответ №1:

Использовать WebView.bind() .

Заставить пример в этом вопросе работать может быть так просто, как ( test() станет глобальной функцией, как ожидает обработчик щелчков):

 @@ -27,5  27,8 @@ const webview = new WebView({
   debug: true,
   frameless: false
 });
 
 webview.bind('test', test);
 
 // Running the webview
 webview.run();