openWin簡單點說就是:像是一個瀏覽器
openFrame就是對應openWin瀏覽器里面打開的每一個網頁
有些操作只能在openWin里面執行,比如監聽安卓返回事件,只能在openWin里面才有效,openFrame里面無效。
execScript傳遞參數無效,在同一個openWin下面,所有frame之間交互只要frameName參數就行了。但是如果跨越openWin,類似在不同瀏覽器下面傳遞參數,就需要加上name參數,也就是Win的名字。
我覺得你的情況可能是這樣的:
你打開WINA,然后打開了frame(用戶)和frame(游客),然后通過frame(游客)打開WINB,
但是這時候,WINA不是關閉了,而是在它的基礎上打開了WINB,所以你關閉WINB時,不需要再打開WINA,而是直接關閉frame(游客)即可。而且我覺得如你所說,可能確實是游客擋住了用戶,那你也可以用bringFrameToFront方法把frame(用戶)調整到前面,應該也能解決問題。
我覺得如果是這種情況,未必需要兩個frame切換,可以像版主說的一樣寫在一個frame里即可,先設置一個標識檢測是否為登錄狀態,如果是則加載用戶需要顯示的內容,如果否則顯示游客需要看到的內容,可以分別寫在不同的塊里比如不同的DIV,然后通過標識來切換DIV是否顯示即可。
如果設計上必須用兩個frame,則你一進來時不要同時打開兩個frame,而是根據標識判斷是否登陸,然后打開相應的frame,而登陸或者退出登錄后,再打開另一個frame,這樣的話,新打開的frame自然是在原來的frame之上。
html,body{
margin-right: 0;
}
function openFilter(){
api.openWin({
name:'filter_header',
url:'./filter_header.html',
bgColor:rgba(0,0,0,0.8),//或者直接不傳該參數 ...
opaque:false
});
}
經驗分享:
比如a.html頁面要使用openFrame方式彈窗b.html頁面,實現半透明遮擋a.html效果
第一步:在b.html頂部設置
body{
background: transparent;
}
第二步:在a.html中openFrame參數中添加
bgColor:'rgba(255, 255, 255, 0.2)',
比如:
- function opentest() {
- api.openFrame({
- name : 'testframe',
- url : '../html/testtest.html',
- rect : {
- x : 0,
- y : 0,
- w : 'auto',
- h : 'auto'
- },
- bgColor:'rgba(255, 255, 255, 0.2)',
- pageParam : {
- program_ids : program_ids,
- nameTitle : nameTitle,
- type : 'pro'
- }
- });
- }