Yeah,i get your mean(For security, i encode js bundle with XXTEA in OSS, and download/decode js bundle before SDKManager.render() )。 And in fact,broadcastChannel is content with the need of business. But it not *the best/most easy way to deal with neighbour pages*,especially the second page will back to the first page with a obj param。(such as:bank detail page(click the bank) => bank list page(choose a bank) = > back to bank detail page(with bank info param))
Because of lazy,i wrote an Js API for more convenient in the scene: /* global Date */ Date.$PUSH_UUID = Date.$PUSH_UUID || 0 Date.$PUSH_CALLBACK_CENTER = Date.$PUSH_CALLBACK_CENTER || {} function $push(path, params, callback) { const isWeexPage = path.indexOf('weex/page/') >= 0 const hasCallback = typeof callback === 'function' if (!isWeexPage && hasCallback) { log('Warning', 'Only pushing to a Weex page support a callback!') } const puuid = (isWeexPage && hasCallback) ? (++Date.$PUSH_UUID) : undefined const finalUrl = url.join(toLink(path, DefaultScheme), params, puuid ? { puuid } : undefined) native.push(finalUrl) if (puuid) { Date.$PUSH_CALLBACK_CENTER[puuid] = callback this.$on('hook:destroyed', () => Date.$PUSH_CALLBACK_CENTER[puuid] = undefined) } } function $pop(v) { native.pop() const root = getRootVM(this) const puuid = root.params.puuid if (puuid) { const callback = Date.$PUSH_CALLBACK_CENTER[puuid] Date.$PUSH_CALLBACK_CENTER[puuid] = undefined if( typeof callback === 'function') callback(v) } } it is useful and very convenient。 A=>B : $push(url, params, (v)=>{ //do callback }) B=>A: $pop(obj) Then the callback(from A) will invoke with obj(from B). *The only premise is the Date is a global object in Js Environment for each weex instance。* 申远 <shenyua...@gmail.com> 于2020年3月2日周一 下午11:33写道: > Well, It seems like you could use broadcastChannel [1] to send message (not > callback) among pages. If this is not enough, you have to use low level C++ > api to implement it by yourself, which is hard to write and not encouraged. > > A message among pages is not enough in your case? I'd like to here the > detail. > > FYI: Apache Weex excludes global JS object for security reasons. A > malicious hacker could inject a JS snippet containing dangerous function > just by loading his URL in Weex. If global JS object is supported, it's > very easy for you to excute the JS function provided by malicious hacker in > your page. That's reason we design Sandbox. And I'd encourage every > developer keeping if for security reason. > > [1] https://weex.apache.org/zh/docs/api/broadcast-channel.html > > Best Regards, > YorkShen > > 申远 > > > 黄天宁 <zsmj...@gmail.com> 于2020年2月28日周五 上午10:17写道: > > > OK, i get it. Thanks! > > But it is a shame. Both ways are not enough for me. (first is not > > suitable,second can not save JS callbacks in Native) > > I want a global object in JS, none of Native business. > > I use a way like Eventbus for communication between neighbour pages > > instead. > > > > Before Sandbox,I realize an api for *neighbour pages*: > > > > pagaA push to pagaB witch a *callback((v)=>{})* and *increased pushId*, > > pushId && callback both saved in *global* *Date().$CALLBACKS/* > > *Date().$PUSHID.* > > pageB get *pushId* from params. When pageB *pop(v)*, *search callback by > > pushId* in global Date().$CALLBACKS.Then inoke *callbakc(v).* > > > > It is a very useful api , and the scene is frequent in business > > for neighbour pages, which need pageA invoke callback after back from > > pageB with params. > > > > By the way,I find a terrible bug in Jsfm in Android。And i try to find the > > reason and solve it > > When the type of *inputValue * is *number,*, which *bind with* Component > > <input> *property value*。*Precision problem* will happen to* > inputValue* . > > For example, input 2.5 will show 2.50000, if change *inputValue* to > > *string*, > > the error disappear. > > The behaviour in IOS is all right. > > > > > > 申远 <shenyua...@gmail.com> 于2020年2月27日周四 下午5:49写道: > > > > > The answer is no, and you should never consider using Weex without > > sandbox. > > > > > > You could however, > > > 1. use boradcastChannel [1] for communication between pages > > > 2. or use JS service [2] for vendor.js, which is very similar to global > > > object. > > > > > > [1] https://weex.apache.org/zh/docs/api/broadcast-channel.html > > > [2] https://weex.apache.org/zh/docs/api/js-service.html > > > > > > Best Regards, > > > YorkShen > > > > > > 申远 > > > > > > > > > 黄天宁 <zsmj...@gmail.com> 于2020年2月25日周二 下午4:16写道: > > > > > > > Dear devs: > > > > I'm sorry to disturb you about a question about SandBox in both > > > > aos/ios. > > > > In some case, developer need a global Object to save/share > > something > > > > for different pages with JS callback,which can not save to Native > > > > SharedPreference. > > > > *1.In sandBox mode, is there a global Object for mounting?*(It > > looks > > > > none, from the doc on website : > > > > *In particular, the Vue variable are different in each pages, and > > even > > > > the "global" config of Vue (Vue.config.xxx) only affect the single > page > > > on > > > > Weex.* > > > > > > > > Android SDK can switch to *unuse sandbox mode*, but IOS SDK > looks > > > > none. > > > > *2.IOS is not just like Android,which is without the selection > > > > of isSandBox.* > > > > Little understand in C++ sandBox. If you have free time,give me > > some > > > > pointers,plz. > > > > > > > > Thanks! > > > > > > > > > >