自mip升级v2版本后,多了一个mip-script组件,很多人就都以为可以写自定义js代码了!然并卵,MIP2页中还是一样不允许自定义javascript代码,所有的交互须通过组件实现。
引用官方说明:在 mip-script
中,只允许进行数据相关的操作,不允许直接操作 DOM 。 因此通过 mip-script
编写的 JS 代码将会运行在沙盒环境(严格模式)中,仅开放部分全局对象供开发者使用,非白名单内的对象的行为将不能正常执行。mip-script 组件中的沙盒会对开发者的JS代码进行全局变量的替换和检测。
白名单列表请参考:严格模式的可用全局变量列表
下面看一组示例
<mip-script> console.log('mip-script executed') console.log(document.cookie) window.location.href = '/' var ele = document.getElementById('test') </mip-script>
以上代码片段运行后,因为 location
的跳转以及 document.getElementById
都已被列为危险行为,相关全局变量或 API 不在白名单列表内,被沙盒禁止执行,因此运行时会报错,或在编译阶段就已经被替换成无效语句,无法正常执行。说白了这个组件也就是废了,个人观点可不认同。
如果要用到异步加载一些内容,可以用mip-bing mip-infinitescroll mip-list等组件进行相关数据处理
那么百度mip不允许自己定义js,官方组件又有限,有一些交互又必须js完成,怎么办呢?可以通过封装成组件再去引用,具体封装组件步骤,详情参考:https://www.cnblogs.com/svip7/p/mipzujiankaifa.html