async function execLink(url, linkSrc) {
  if (linkSrc === "URL") {
    parent.cordova.InAppBrowser.open(url, "_system");
  } else
    try {
      if (document.getElementById("scspinner")) return;
      showLoadSpinner();
      if (url.startsWith("#")) {
        const anchor = url.substring(1);
        parent.saltcorn.mobileApp.navigation.setAnchor(anchor);
      } else if (url.startsWith("javascript:")) eval(url.substring(11));
      else {
        const { path, query } =
          parent.saltcorn.mobileApp.navigation.splitPathQuery(url);
        const safePath = path.startsWith("http")
          ? new URL(path).pathname
          : path;
        await parent.saltcorn.mobileApp.navigation.handleRoute(
          `get${safePath}`,
          query
        );
      }
    } catch (error) {
      parent.saltcorn.mobileApp.common.errorAlert(error);
    } finally {
      removeLoadSpinner();
    }
}
Pass View or Page source into the app internal router,
links with an URL source are opened in the system browser.
@param {string} url
@param {string} linkSrc - URL, View or Page