UNPKG

para-bridge-demo

Version:

a bridge api for js-ios/andriod rest

44 lines (37 loc) 1.32 kB
import { BridgePlugin } from '../bridge'; import { hasUrlNtvThird, setUrlNtvThird, getUrlNtvThird } from '../../utils/bridgeUtils'; interface IOpenNewUrl { openParams: string; jumpUrl: string; } export class OpenNewUrlCloseBefore<K> extends BridgePlugin<IOpenNewUrl, K> { protected get ntvPluginName() { return '_ntv_web_open_with_close'; } protected get availableMinVersion() { return '1.0.0'; } protected bridgeExecChrome(pluginName?: string | undefined): void { // 可针对不同运行环境实现特定的调用逻辑来MOCK,弥补平台差异性. console.warn('当前浏览器环境:bridgeExecChrome()'); if (this.param) { window.location.href = this.param.jumpUrl; } else { throw new Error('请指定浏览器跳转的URL全路径地址'); } } } /** * 打开新窗口H5地址或者合法的client://协议地址,同时关闭以前个窗口 * @param url 有效的URL地址 * @param persistNtvThird 持久化传递ntv_third参数 默认持久化 */ export const openNewUrlCloseBefore = (url: string, persistNtvThird: boolean = true) => { if (hasUrlNtvThird() && persistNtvThird) { url = setUrlNtvThird(url, getUrlNtvThird()); } new OpenNewUrlCloseBefore<void>({ openParams: 'newWindow,needSlide', jumpUrl: url }).invoke(); }