Nw-js中如何避免弹出新窗口?

摸索了如下几种方式:

1、使用iframe,然后对$('a[target=_blank]')进行处理,这个办法肯定是可以的,但是iframe太奇怪了,你把一个页面套在另外一个页面中,这样搞简直不是做本地程序的道理,虽然网上有人用iframe实现了一个浏览器,但对于有洁癖的人来说实在忍不了。

2、使用nw.Window,官方提供了一个所谓的new-win-policy事件来处理类似需求,然而根本没效果,从网上查外国论坛的说法,人家都说没见过任何成功的案例,所以从这个里跳出来的窗口仍然没有比较合理的处理办法,还是在DOM里查找$('a[target=_blank]')。google官方的文档里可以用chrome.App.window.getAll(),但是得到的Object其实根本没法处理。而且就算可以,我们也不能等窗口已经弹出再关掉吧?

3、使用<webview>tag,这个东西可以像iframe一样套在页面中,而且这个东西默认就是不许弹窗的,chrome官方还提供了newwindow事件来通知我们有人要弹窗了,你不必跑到dom里去挑三拣四,所以这个是最好的办法,但问题这个标签根本不稳定,遇到动不动就崩溃,而且无法找到原因,看样子和flash有关。(12/4更新:我已经搞定,目前已无崩溃现象)

官方文档2:webview tag

我记得很多年前我搞过electron,但现在只记得有这么一回事,而不知道怎么搞了。而且相关的工具链太长了,Nw-Js好像简单很多,所以选择了nw-js,但是现在感觉有点后悔,还不如直接搞IE内核。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注