今天我開始會寫出我弄SuperWebView所遇到的問題的解決方案挣磨,我會持續(xù)更新的
1.頂部跟狀態(tài)欄重合
2.啟動A項目卻一直啟動的是B項目
3.下拉刷新無法使用
4.模塊獲取相同的ID是否會錯亂
5.superwebView 如何加載外部網(wǎng)址
6.使用execScript(回調(diào)) 傳遞參數(shù)
7.html頁面之間傳遞參數(shù)
8.div或者其它標(biāo)簽里面杂曲,自定義參數(shù)字段,然后獲取
9.使用api.download下載文件
10.使用函數(shù)function函數(shù)回調(diào)(callBack)傳遞參數(shù)
11.從Activity打開widget文件夾下面某一個Html頁面
12.從Activity里面無法找到widget文件夾下面的某一個Html頁面
13.使用addEventListener傳遞參數(shù)
14.同一個功能里面含有2個相同的Frame頁面,我是否可以共用同一個Frame頁面
15.Uncaught Error calling method on NPPobject at JsRuntime:1
16.api.accessNative傳遞參數(shù)給原生
17.dot.js如何傳遞對象
18.如何獲取設(shè)備是IOS還是安卓,以及設(shè)備型號
19.從豎直的主Activity啟動橫屏的H5導(dǎo)致APP直接退出
20.APPLoader 加載JS在小米會報xx is not defined 華為和模擬器正常
21.從H5豎屏頁面轉(zhuǎn)H5橫屏頁面备燃,出現(xiàn)崩潰信息
22.api is not defined
23.APICloud Webstorm WiFi日志輸出報錯:java.io.IOException: Couldn't create PTY
24.Webstorm HTML文件無法拖拽到Webstorm里面打開
25.overflow-y: scroll ios 滑動不流暢
26.api.showProgress沒有顯示
27.armabi armabi-v7a 選哪個so包放到項目里面
28.api.showProgress 在win界面有時候可以出現(xiàn)加載框,有時候不出現(xiàn)加載框
29.api.showProgress 會被Frame遮擋 BUG???
30.在Win界面api.showProgress役电,在Frame/Win界面調(diào)用api.hideProgress()都會關(guān)閉么?
31.backgroundImage 如何加載手機里面的某一張圖片赚爵?
32.img如何加載手機里面的某一張圖片?
33.vue MUI switch 滑塊無法滑動
34.如何通過Intent startActivity 傳遞參數(shù)給H5頁面(原生主動傳遞參數(shù)給H5)法瑟?
35.addEventListener被其它頁面覆蓋后冀膝,還會監(jiān)聽得到么?
36.APICloud加載圖片列表項霎挟,用戶一直往下拉窝剖,一直在吃內(nèi)存怎么解決?
37. 按下homte鍵后返回APP酥夭,先閃現(xiàn)出原生界面赐纱,然后才是H5界面
38.啟動Activity并加載了A.html脊奋,發(fā)現(xiàn)api.execScript無法執(zhí)行
39.模塊未綁定
1、今天遇到了一個頂部跟狀態(tài)欄重合的狀況
![TTKL7KT@_%%QGapi.fixStatusBar來解決
官網(wǎng)API如下:
http://docs.apicloud.com/Front-end-Framework/framework-dev-guide#45
2、今天遇到一個問題起胰,我一個Project目錄下有很多module久又,就是我跑A Modle,它總是把B Modle跑起來效五,后來解決方案是:因為2個項目的config.xml 里面的widget id相同導(dǎo)致的問題
3地消、下拉刷新無法使用
今天遇到一個問題,在首頁里面我們含有下拉刷新的控件的畏妖,但是IOS切換頁面后脉执,再切換回來,就不能下拉刷新了戒劫,后來改了api.openFrame bounces為true屬性半夷,就可以使用了
4、今天寫模塊的開發(fā)迅细,突然看到一個叫moduleDemo里面的我就想了一個問題
UZResourcesIDFinder.getResIdID("text");這個方法是獲取mo_demo_main_activity里面的一個TextView的Id,如果我自定義另外一個layout,
比如名字叫mo_demo_main_hello的layout,當(dāng)然我不通過UZResourcesIDFinder.getResLayoutID去加載它的mo_demo_main_hello的layout玻熙,(mo_demo_main_hello)的layout里面也有一個叫text的TextView,
那么問題來了疯攒,我通過UZResourcesIDFinder.getResIdID("text")這個查找到的TextView是哪個里面的?最后根據(jù)我的實驗列荔,它是找的mo_demo_main_activity里面的TextView敬尺,因為我是通過UZResourcesIDFinder.getResLayoutID 去加載mo_demo_main_activity
5、superwebView 如何加載外部網(wǎng)址
在APP調(diào)用瀏覽器有兩種方法:
1.使用openApp
2.使用openWin/openFrame
兩種方法調(diào)用瀏覽器后的效果有一點不同:
1.使用openApp調(diào)用瀏覽器后贴浙,如果手機內(nèi)有多個瀏覽器砂吞,會首先彈出選擇瀏覽器的框
2.使用openWin/openFrame,直接打開網(wǎng)頁.
openWin:
api.openWin({
name : 'win_show2',
url : 'http://www.baidu.com',
rect: {
x: 0,
y: 0,
w: ‘a(chǎn)uto’,
h: 'auto'
}
})
openFrame:
在apiready里面加入
api.openFrame({
name: 'biadu',
url: 'http://www.baidu.com',
rect: {
x: 0,
y: 0,
w: ‘a(chǎn)uto’,
h: 'auto'
},
bounces: true,
bgColor: 'rgba(0,0,0,0)',
vScrollBarEnabled: true,
hScrollBarEnabled: true
});
openApp:
api.openApp({
androidPkg : 'android.intent.action.VIEW',
mimeType : 'text/html',
uri : 'http://www.baidu.com'
}, function(ret, err) {
});
必須要加入 http或者https 這樣的崎溃,否則無法加載
- 使用execScript(回調(diào)) 傳遞參數(shù)
api.execScript({
name:'root', //這里root代表index.html
frameName: 'frame_index_me',
script: 'setData("' + id + '","' + name + '");'
});
function setData(id, name){
alert("這是我的id: " + id);
alert("這是我的name: " + name);
}
上面這段代碼是從superwebView論壇里面找到的蜻直。
下面是我自己發(fā)現(xiàn)的一個
api.execScript({
name:'root', //這里root代表index.html
frameName: 'frame_index_me',
script: 'setData();'
});
function setData(id, name){
alert("這是我的id: " + id);
alert("這是我的name: " + name);
}
我就這樣執(zhí)行操作,它也是能夠執(zhí)行成功的
- html頁面之間傳遞參數(shù)
api.openFrame({
name: 'deliverOrder_list',
url: '../html/deliverOrder_list.html',
bounces: false,
rect: {
x: 0,
y: headerHeight,
w: 'auto',
h: heightForFrame
},
pageParam: { //這個是用來傳遞參數(shù)的
coPickNo: coPickNo
}
});
獲取參數(shù)deliverOrder_list.html頁面
if (api.pageParam != null && api.pageParam != '') {
if (api.pageParam.coPickNo != null && api.pageParam.coPickNo != '') {
coPickNo = api.pageParam.coPickNo;
}
}
- div或者其它標(biāo)簽里面袁串,自定義參數(shù)字段概而,然后獲取
自定義參數(shù)字段
{{for(var prop in it) { }}
<li paramValue="{{=it[prop].erpPtId}}">{{=it[prop].displayText}}</li>
{{}}}
//paramValue是我自定義的
獲取自定義參數(shù)
var erpPtId = $api.attr(this, 'paramValue');
//this,表示此時被點擊的對象囱修,在被點擊的對象里面找paramValue
9.使用api.download下載文件
api.download({
url: 'xxxx',
savePath: 'fs://aaaaaaaaaaa.jpg',
report: false,
allowResume: false
}, function (ret, err) {
if(ret.state==1){
alert('下載成功');
}
});
url:你要下載的地址赎瑰,不管你下載的文件后綴是.jpg,還是.png破镰,還是.xml餐曼,還在.zip格式的压储,你都需要在savePath:'fs://xxxxxxxx.你要下載的格式',寫上你對應(yīng)的格式
10.使用函數(shù)function函數(shù)回調(diào)(callBack)傳遞參數(shù)
ajaxRequest(getTabBarBannerUrl + JSON.stringify(urlParam), 'GET', '', function (ret, err) {
if (ret) {
var content = $api.byId('banner-content');
var tpl = $api.byId('banner-template').text;
var tempFn = doT.template(tpl);
content.innerHTML = tempFn(ret[0].banner);
initSlide();
} else {
api.toast({msg: err.msg, location: 'middle'})
}
})
ajaxRequest函數(shù):
function ajaxRequest(url, method, bodyParam, callBack) {
var common_url = 'https://d.apicloud.com/mcm/api';
var appId = 'A6963429484030';
var key = '7F836F04-CAAC-52C8-2332-CF337134FA6F';
var now = Date.now();
var appKey = SHA1(appId + "UZ" + key + "UZ" + now) + "." + now;
api.ajax({
url: common_url + url,
method: method,
cache: false,
timeout: 20,
headers: {
"Content-type": "application/json;charset=UTF-8",
"X-APICloud-AppId": appId,
"X-APICloud-AppKey": appKey
},
data: {
body: bodyParam
}
}, function (ret, err) {
callBack(ret, err); //這行是回調(diào)的
});
}
11.從Activity打開widget文件夾下面某一個Html頁面
Intent intent = new Intent(this, WebPageModule.class);
//不傳遞startUrl的情況下源譬,默認走自動加載widget的機制集惋,即:APICloud引擎會自動去解析assets/widget目錄下的資源并加載
// String url = "file://" + UZUtility.getExternaStoragePath() + "index.html";
// intent.putExtra("startUrl", "file:///android_asset/widget/index.html");
// intent.putExtra("startUrl", url);
startActivity(intent);
12.從Activity里面無法找到widget文件夾下面的某一個Html頁面
Intent intent = new Intent(this, ContractExecuteHtmlActivity.class);
String url = "file:///android_asset/widget/html/purchase.html";
intent.putExtra("startUrl",url);
startActivity(intent);
我使用這樣的方式一直找不到html頁面,后來發(fā)現(xiàn)踩娘,是html頁面根本沒有編譯到apk里面
13.使用addEventListener傳遞參數(shù)
//發(fā)送廣播事件
api.sendEvent({
name: 'myEvent', //要和接收廣播參數(shù)的對應(yīng)
extra: {
name: '張三',
age: '18'
}
});
//接收廣播事件參數(shù)
//html頁面a:
api.addEventListener({
name: 'myEvent'
}, function(ret, err) {
alert(ret.value.name);//打印名字
alert(ret.value.age);//打印年齡
});
14.同一個功能里面含有2個相同的Frame頁面刮刑,我是否可以共用同一個Frame頁面
我告訴你答案是可以的,不過 name要不相同
//打開frame組頁面頁面
api.openFrameGroup({
name: 'inveneryQueryGroup',
scrollEnabled: true,
rect: {
x: 0,
y: titleHeaderHeight+nvarHeader,
w: 'auto',
h: showHeaderHeight-nvarHeader-footerHeight
},
index: 0,//默認顯示的默認索引
frames: [{
name: 'inventeryQuery_depot_frame_list', //按倉庫
url: '../html/inventeryQuery_depotVariety_frame_list.html',
bounces: false,
vScrollBarEnabled: false,
hScrollBarEnabled: false,
pageParam: {
erpPtId: erpPtId,
status:INVENTERYQUERY_10
}
}, {
name: 'inventeryQuery_Variety_frame_list', //按品種
url: '../html/inventeryQuery_depotVariety_frame_list.html',
bounces: false,
vScrollBarEnabled: false,
hScrollBarEnabled: false,
pageParam: {
erpPtId: erpPtId,
status:INVENTERYQUERY_20
}
}]
}, function (ret, err) {
var index = (ret.index);//下標(biāo)
var navBarBar = $api.dom('#navBar_receipt_dailyPay .navBar_bar_inner');
navBarBar.style.webkitTransform = 'translateX(' + index * 100 + '%)';//設(shè)置下標(biāo)藍色滑動
});
15.Uncaught Error calling method on NPPobject at JsRuntime:1
我出現(xiàn)這個問題是我Html頁面下載了文檔霸饲, 然后想通過調(diào)用原生的方式去打開贝次,結(jié)果發(fā)現(xiàn),原生報錯了所以解覺原生錯誤的代碼即可
- api.accessNative傳遞參數(shù)給原生
api.accessNative({
name: 'showMenu',
extra: {
filePath: 'xxx/xxxx/abc.xml'
}
}, function(ret, err) {
});
原生界面獲取extra對象
JSONObject jsonObject = moduleContext.optJSONObject("extra");
Log.i(TAG,jsonObject.optString("filePath"));//xxx/xxxx/abc.xml
//moduleContext是UZModuleContext
17.dot.js如何傳遞對象
<script type="text/template" id="fujian_ul_template">
{{for(var prop in it) { }}
<li fileIdValue="{{=it[prop].fileId}}" ptIdValue="{{=it[prop].ptId}}" paramsValue='{{!JSON.stringify(it)}}' onclick="fnDownFile(this)">
<p class="fileName">
<a>
{{? it[prop].fileName}}
{{=it[prop].fileName}}
{{}}}
</a>
</p>
</li>
{{}}}
</script>
注意上面我的{{!JSON.stringify(it)}}距境,這里是將json對象轉(zhuǎn)為字符串
var attachments = JSON.parse($api.attr(e, 'paramsValue'));
console.log("對象"+JSON.stringify(attachments[0]));
console.log("對象"+JSON.stringify(attachments));
18.如何獲取設(shè)備是IOS還是安卓步藕,以及設(shè)備型號
if(api.systemType=='ios'&&api.deviceModel=='iPhone X'){//如果是蘋果X
$api.fixStatusBar(header);//解決IOSX
}
var systemType = api.systemType; // 比如: ios
var deviceModel = api.deviceModel; // 比如: iPhone 5
19.從豎直的主Activity啟動橫屏的H5導(dǎo)致APP直接退出
我最近有個需求,我需要從主Activty啟動一個橫屏的H5傻工,我進入橫屏的H5頁面后霞溪,再點擊返回按鈕返回主Activity,發(fā)現(xiàn)直接退出APP了中捆,沒有任何的異常信息錯誤提示鸯匹。
解決辦法:
AndroidManifest.xml
<!--主Activity-->
<activity
android:name="xxxxxxxxxxx.activity.MainActivity"
android:label="@string/title_activity_main"
android:logo="@drawable/icon_application"
android:screenOrientation="portrait"
android:configChanges="orientation|screenSize|keyboardHidden"
android:theme="@style/Baf.Theme.NoTitleBar"
android:windowSoftInputMode="adjustPan"/>
<!--橫屏的H5,因為HTML是承載在activity上面的-->
<activity android:name=".business.activity.VisualizationHtmlActivity"
android:screenOrientation="landscape"
android:theme="@style/H5StyleNotitle"/>
****** 注意:我這里的MainActivity是主頁面的(它承載了4個Fragment)泄伪,然后我啟動的VisualizationHtmlActivity呢殴蓬,是我在fragment點擊后需要進入的
主Activity頁面加入
android:configChanges="orientation|screenSize|keyboardHidden"
這樣就可以防止app走生命周期的銷毀流程,如果你要在切換橫豎屏幕的時候做一些操作可以加入一些監(jiān)聽
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
int mCurrentOrientation = getResources().getConfiguration().orientation;
if ( mCurrentOrientation == Configuration.ORIENTATION_PORTRAIT ) {
BAFLogger.i(TAG,"PORTRAIT");
} else if ( mCurrentOrientation == Configuration.ORIENTATION_LANDSCAPE ) {
BAFLogger.i(TAG,"LANDSCAPE");
}
}
總結(jié):哪個頁面需要轉(zhuǎn)換屏幕就在哪個頁面上添加蟋滴。
文獻參考
http://blog.sina.com.cn/s/blog_77c632410101790w.html (講解橫豎生命周期)
https://blog.csdn.net/michelle0516/article/details/37876325 (講解關(guān)/熄屏幕會多次走生命周期)
20.APPLoader 加載JS在小米會報xx is not defined 華為和模擬器正常
這個問題很蛋疼染厅,最開始在官方里面的論壇里面問,他們還是沒有給出正解的答案津函。后面自己亂弄就好了
首先打開手機SD卡肖粮,把UZMap刪除,然后用自帶的清理工具尔苦,清理垃圾涩馆,然后重新啟動手機,搞定允坚。
21.從H5豎屏頁面轉(zhuǎn)H5橫屏頁面魂那,出現(xiàn)崩潰信息
錯誤信息如下
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.uzmap.pkg.uzcore.UZCoreUtil.hideSoftKeyboard(UZCoreUtil.java:280)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.uzmap.pkg.uzcore.t.onVisibilityChanged(UZHybridWindow.java:128)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.view.View.dispatchVisibilityChanged(View.java:8778)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.view.ViewGroup.dispatchVisibilityChanged(ViewGroup.java:1278)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.view.View.setFlags(View.java:9870)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.view.View.setVisibility(View.java:6742)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.uzmap.pkg.uzcore.t.f(UZHybridWindow.java:1177)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.uzmap.pkg.uzcore.p.a(UZHybridWidget.java:521)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.uzmap.pkg.uzcore.p.a(UZHybridWidget.java:491)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.uzmap.pkg.uzcore.p$2.run(UZHybridWidget.java:324)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.os.Handler.handleCallback(Handler.java:815)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.os.Handler.dispatchMessage(Handler.java:104)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.os.Looper.loop(Looper.java:194)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at android.app.ActivityThread.main(ActivityThread.java:5562)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at java.lang.reflect.Method.invoke(Native Method)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at java.lang.reflect.Method.invoke(Method.java:372)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
05-16 22:07:42.926 10028-10028/com.gise_gnm.mobile.gkapp W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
05-16 22:07:42.956 10028-10028/com.gise_gnm.mobile.gkapp W/WebView: setLayerType()
05-16 17:16:22.274 10247-10247/com.gise_gnm.mobile.gkapp W/WebView: setLayerType()
05-16 17:16:22.305 10247-10247/com.gise_gnm.mobile.gkapp W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 10247
05-16 17:16:22.614 10247-10247/com.gise_gnm.mobile.gkapp W/cr_AwContents: Application attempted to call on a destroyed WebView
java.lang.Throwable
at org.chromium.android_webview.AwContents.isDestroyed(AwContents.java:1256)
at org.chromium.android_webview.AwContents.isDestroyedOrNoOperation(AwContents.java:1186)
at org.chromium.android_webview.AwContents.getTitle(AwContents.java:2044)
at org.chromium.android_webview.AwWebContentsDelegateAdapter.loadingStateChanged(AwWebContentsDelegateAdapter.java:280)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5562)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
05-16 17:16:22.695 10247-10247/com.gise_gnm.mobile.gkapp W/cr_BindingManager: Cannot call determinedVisibility() - never saw a connection for the pid: 10247
05-16 17:16:22.696 10247-10247/com.gise_gnm.mobile.gkapp W/cr_AwContents: Application attempted to call on a destroyed WebView
java.lang.Throwable
at org.chromium.android_webview.AwContents.isDestroyed(AwContents.java:1256)
at org.chromium.android_webview.AwContents.isDestroyedOrNoOperation(AwContents.java:1186)
at org.chromium.android_webview.AwContents.getTitle(AwContents.java:2044)
at org.chromium.android_webview.AwWebContentsDelegateAdapter.loadingStateChanged(AwWebContentsDelegateAdapter.java:280)
at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:41)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.app.ActivityThread.main(ActivityThread.java:5562)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:968)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:763)
解決辦法:
解決辦法其實跟20的一樣,哪個頁面需要轉(zhuǎn)換屏幕就在哪個頁面上添加稠项。
22.api is not defined
說明:我這個HTML頁面加載了jquery.js進去了的
我錯誤的源碼
$(function () {
if (api.pageParam && api.pageParam != '') {
if (api.pageParam.item && api.pageParam.item != '') {
item = api.pageParam.item;
} else {
alert("傳遞的item參數(shù)為空");
closeFrame();
return;
}
} else {
alert("傳遞的item參數(shù)為空");
closeFrame();
return;
}
冰寻。。皿渗。斩芭。省略代碼
});
如果我像上面這樣寫會報這個錯誤:api is not defined
正確的寫法
//$(function () {
apiready = function () {
if (api.pageParam && api.pageParam != '') {
if (api.pageParam.item && api.pageParam.item != '') {
item = api.pageParam.item;
} else {
alert("傳遞的item參數(shù)為空");
closeFrame();
return;
}
} else {
alert("傳遞的item參數(shù)為空");
closeFrame();
return;
}
轻腺。。划乖。贬养。省略代碼
}
//});
23.APICloud Webstorm WiFi日志輸出報錯:java.io.IOException: Couldn't create PTY
文章轉(zhuǎn)載:
https://blog.csdn.net/DeMonliuhui/article/details/79777389
解決方案:
將cmd路徑寫完整
"C:\Windows\System32\cmd.exe" /K "chcp 936 && java -jar C:/APICloud/workspace/wifilog.jar C:/APICloud/workspace/log_info"
24.Webstorm HTML文件無法拖拽到Webstorm里面打開
文章轉(zhuǎn)載:http://www.jackxiang.com/post/8725/
運行中輸入regedit,打開注冊表編輯器
在下面的鍵值:
HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > Windows > CurrentVersion > Policies > System
找到EnableLUA將1改成0琴庵,然后重啟機子误算。
25.overflow-y: scroll ios 滑動不流暢
文章轉(zhuǎn)載:https://blog.csdn.net/dnpao/article/details/76571474
加入如下規(guī)則
.bigItem-list {
width: 100%;
-webkit-overflow-y: scroll;
overflow-y: scroll;
-webkit-overflow-scrolling: touch; /**解決IOS滑動不流暢問題**/
}
26.api.showProgress沒有顯示
出現(xiàn)這樣的問題,多半是被遮蓋導(dǎo)致的迷殿,你可以設(shè)置延遲300ms儿礼,然后再來顯示
setTimeout(function() {
api.showProgress({
title: '加載中',
modal: false
});
}, 300)
27.armabi armabi-v7a 選哪個so包放到項目里面
都可以選擇其中一個放入即可
28.api.showProgress 在win界面有時候可以出現(xiàn)加載框,有時候不出現(xiàn)加載框
解決辦法
api.addEventListener({
name:'viewappear'
}, function(ret, err){
api.showProgress({
title: '加載中',
modal: false
});
});
Window 顯示到屏幕的事件庆寺,字符串類型蚊夫。收到 viewappear 事件回調(diào),即標(biāo)識當(dāng)前 Window 已經(jīng)動畫結(jié)束懦尝,并且完全顯示到屏幕上知纷。
該事件的作用對象為 Window,F(xiàn)rame 的顯示不會收到事件
29.api.showProgress 會被Frame遮擋 BUG???
原文地址
解答:api.showProgress是依附于window的陵霉,你打開frame琅轧,層級高于win,肯定遮蓋踊挠,這不是一個bug
30.在Win界面api.showProgress乍桂,在Frame/Win界面調(diào)用api.hideProgress()都會關(guān)閉么?
不會
31.backgroundImage 如何加載手機里面的某一張圖片?
格式是: “url('file://”+Android原生路徑+"')"
圖片地址:/storage/emulated/0/20180725190152463.jpg
document.getElementById("fengmian").style.backgroundImage="url('file://"+picObj.bigPic+"')" ;
32.img如何加載手機里面的某一張圖片效床?
手機圖片地址:/storage/emulated/0/20180726202822869.png
格式是:file://"+Android原生地址+"
$api.byId('fengmian_pic').src="file://"+picObj.bigPic+"";
請注意:跟上面的backgroundImage加載是有區(qū)別的模蜡,backgroundImage加載是有 ‘ ’ 這樣的符號的,在file位置扁凛,img加載是沒有的
33.vue MUI switch 滑塊無法滑動
對于這樣的問題,我們要動態(tài)的添加swith闯传,然后再初始化mui里面的switch組件
vm = new Vue({
el: '#container',
mounted:function(){
$api.byId('muiswitchcomment').innerHTML='<div class="mui-switch mui-switch-mini"><div class="mui-switch-handle"></div></div>';
var a = this;
a.$nextTick(function() {
mui('.mui-switch').switch();
});
},
methods: {
}
});
就像上面我那樣寫就可以了谨朝,mounted 是VUE在初始化HTML頁面完成之后會調(diào)用的
34.如何通過Intent startActivity 傳遞參數(shù)給H5頁面(原生主動傳遞參數(shù)給H5)?
比如我的A是H5頁面且是一個詳情頁面甥绿,B是原生的界面字币,如果我通過A詳情頁面進入B界面,此時我想點擊B界面的詳情返回A界面共缕,注意了我這里的返回是再Intent一個A界面出來洗出,此時就是A->B->A這樣。我再次啟動A界面如何傳遞給A界面H5參數(shù)呢图谷?
特別提醒:在低版本是無法這樣傳遞參數(shù)的翩活,我這個版本是1.3.1阱洪,在低版本,你只能通過監(jiān)聽appintent才能獲取
Intent intent = new Intent(this, A.class);
String url = "file:///android_asset/widget/html/detail.html";
Bundle bundle = new Bundle();
bundle.putString("againStatus",MODEL_90);
bundle.putInt("roldId",roldId);
intent.putExtras(bundle);
intent.putExtra("startUrl", url);
startActivity(intent);
A的H5頁面
roldId = api.pageParam.roldId;
againStatus = api.pageParam.againStatus;
就這樣可以直接拿到值了菠镇,現(xiàn)在還有一個問題冗荸,第一個A會收到參數(shù)么?答案是不會利耍。
35.addEventListener被其它頁面覆蓋后蚌本,還會監(jiān)聽得到么?
a.html設(shè)置了一次監(jiān)聽事件比如監(jiān)聽loginListener
a.html
api.addEventListener({
name: 'loginListener'
}, function (ret, err) {
console.log("1234");
});
從a.html --->原生界面--->a.html界面隘梨,此時第一個a.html已經(jīng)被覆蓋了程癌,我們又從原生界面進入了第二個a.html,此時如果有發(fā)出事件被a.html監(jiān)聽到轴猎,那么就只有1次log被打印出來嵌莉,就只有最上面的那個a.html。
36.APICloud加載圖片列表項税稼,用戶一直往下拉烦秩,一直在吃內(nèi)存怎么解決?
怎么用vue.js結(jié)合apicloud的api.imageCache實現(xiàn)圖片緩存](https://community.apicloud.com/bbs/forum.php?mod=viewthread&tid=50251&highlight=vue%2BimageCache)
for循環(huán)怎么實現(xiàn)imageCache
(https://community.apicloud.com/bbs/forum.php?mod=viewthread&tid=115914&highlight=imageCache)
方案一:
Vue.directive('cacheSrc', function(el, binding) {
api.imageCache({
url: binding.value,
thumbnail: false
}, function (ret, err) {
if (ret && ret.status) {
el.setAttribute("src", ret.url);//這里的目的是替換empty.png的圖片
}
});
});
html:
<img src="../../image/default.jpg" v-cache-src="真實圖片">
方案二:
html:
<img v-on:load="cacheImage($event)" :data-url="item.HeadPhoto" v-on:error.once="moveErrorImg($event)" src="../image/icon_list_item_empty.png" class="userheader" v-cloak>
//注意:v-on:load 必須在src的前面
js:
moveErrorImg: function (event) {
event.currentTarget.src = "../image/icon_list_item_empty.png";
},
cacheImage:function (event) {
var tar = event.currentTarget;
var urlPath = $api.attr(tar,"data-url");
api.imageCache({
url: urlPath,
}, function (ret, err) {
if (ret && ret.status) {
tar.setAttribute("src", ret.url);
}
});
}
方案三: 可以解決圖片加載一半的問題
html
<img v-lazy="item.HeadPhoto" class="userheader" v-cloak>
<script type="text/javascript" src="../script/libscript/vue_lazy_catch.js"></script>
js
Vue.use(VueLazyload);
// 或者添加VueLazyload 選項
Vue.use(VueLazyload, {
preLoad: 1.3,
error: '../image/icon_list_item_empty.png',
loading: '../image/icon_list_item_empty.png',
attempt: 1
});
- 按下homte鍵后返回APP郎仆,先閃現(xiàn)出原生界面只祠,然后才是H5界面
解決辦法:app開啟硬件加速,widget的config中配置window顏色扰肌。不過開啟硬件加速有弊端抛寝,我是只弄了window顏色
38.啟動Activity并加載了A.html,發(fā)現(xiàn)api.execScript無法執(zhí)行
當(dāng)你全新啟動一個Activity并加載了A.html曙旭,你想執(zhí)行A.js里面的某個function盗舰,然后你使用api.execScript執(zhí)行對應(yīng)的function,發(fā)現(xiàn)無效果桂躏。
原因:只要你全新啟動一個Activity的時候钻趋,它的winName默認是root,而不是你想要的WinName名稱剂习,所以就無法執(zhí)行函數(shù)蛮位。但是IOS卻可以指定winName,所以你就只能修改方法了
39.模塊未綁定
1鳞绕、確保模塊加入到平臺里面
2失仁、打開云編譯,生成SDK文件们何,并且下載文件
3萄焦、替換so包,apiEngine.jar包(平臺會將新增加的模塊名稱放入到apiEngine里面)冤竹,和新增你剛剛拿到的jar包拂封,
4茬射、配置config.xml
<!--模塊名字-->
<preference name="customRefreshHeader" value="模塊名稱,此處不可以錯誤烘苹,錯誤就無法正常使用"/>