h***@163.com
h***@163.com
  • 发布:2019-08-12 16:03
  • 更新:2019-08-12 16:12
  • 阅读:13981

app端使用document、window问题

分类:uni-app

使用了非H5端不支持的API,比如document、xmlhttp、cookie、window、location、navigator、localstorage、websql、indexdb、webgl等对象。如果你的代码没有直接使用这些,那很可能是引入的三方库使用了这些。如果是后者,去插件市场搜索替代方案。要知道非H5端的js是运行在一个独立的js core或v8下,并不是运行在浏览器里。

文档中显示是不支持document、window之类的api的,但是我在官方的android离线打包demo里看到这些代码,是使用了document、window的。

                //取消浏览器的所有事件,使得active的样式在手机上正常生效  
                document.addEventListener('touchstart', function () {  
                    return false;  
                }, true);  
                // 禁止选择  
                document.oncontextmenu = function () {  
                    return false;  
                };  

                if (window.plus) {  
                    plusReady();  
                } else {  
                    document.addEventListener('plusready', plusReady, false);  
                }  

我尝试了在uniapp项目里使用发现报错,确实是不能。但是我在打包出来的html文件里使用是可以的。 我想问下这个是什么原因?我想要监听plusready之类的事件,该如何写?

2019-08-12 16:03 负责人:无 分享
已邀请:
DCloud_heavensoft

DCloud_heavensoft

uni-app里支持写vue和普通html。vue文件不需要plus ready,直接用,里面没有dom。html文件需要在指定的hybrid目录下,用vue文件里的web-view组件套,这里面支持dom,需要plus ready

  • h***@163.com (作者)

    感谢指导,我用的第三方的js,里面的事件都是下面这种方式派发的, 我在vue文件没办法用document.addListener,有其他办法能添加监听事件吗


                    var event = document.createEvent('HTMLEvents')  
    event.initEvent(ename, true, true)
    event.eventType = 'message'

    jsonData = JSON.stringify(jsonData)
    var data = JSON.parse(jsonData)
    event.arguments = data
    document.dispatchEvent(event)

    2019-08-12 16:32

  • DCloud_heavensoft

    回复 h***@163.com: vue里用不了,去插件市场找替代品吧。或者用HTML

    2019-08-12 16:47

  • h***@163.com (作者)

    回复 DCloud_heavensoft: 了解,感谢 我再想想办法

    2019-08-12 18:21

该问题目前已经被锁定, 无法添加新回复