para-bridge-demo
Version:
a bridge api for js-ios/andriod rest
44 lines (37 loc) • 1.32 kB
text/typescript
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();
}