github.com/secoba/wails/v2@v2.6.4/internal/frontend/runtime/desktop/ipc.js (about)

     1  /*
     2   _       __      _ __
     3  | |     / /___ _(_) /____
     4  | | /| / / __ `/ / / ___/
     5  | |/ |/ / /_/ / / (__  )
     6  |__/|__/\__,_/_/_/____/
     7  The electron alternative for Go
     8  (c) Lea Anthony 2019-present
     9  */
    10  /* jshint esversion: 6 */
    11  
    12  /**
    13   * WailsInvoke sends the given message to the backend
    14   *
    15   * @param {string} message
    16   */
    17  
    18  (function () {
    19  	// Credit: https://stackoverflow.com/a/2631521
    20  	let _deeptest = function (s) {
    21  		var obj = window[s.shift()];
    22  		while (obj && s.length) obj = obj[s.shift()];
    23  		return obj;
    24  	};
    25  	let windows = _deeptest(["chrome", "webview", "postMessage"]);
    26  	let mac_linux = _deeptest(["webkit", "messageHandlers", "external", "postMessage"]);
    27  
    28  	if (!windows && !mac_linux) {
    29  		console.error("Unsupported Platform");
    30  		return;
    31  	}
    32  
    33  	if (windows) {
    34  		window.WailsInvoke = (message) => window.chrome.webview.postMessage(message);
    35  	}
    36  	if (mac_linux) {
    37  		window.WailsInvoke = (message) => window.webkit.messageHandlers.external.postMessage(message);
    38  	}
    39  })();