热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信.NET调用JSSDK

注意:1.所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。2.

 注意:
1. 所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
2. 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
3. 常见问题及完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

<div class&#61;"lbox_close wxapi_form"><h3 id&#61;"menu-basic">基础接口h3><span class&#61;"desc">判断当前客户端是否支持指定JS接口span><button class&#61;"btn btn_primary" id&#61;"checkJsApi">checkJsApibutton><h3 id&#61;"menu-share">分享接口h3><span class&#61;"desc">获取“分享到朋友圈”按钮点击状态及自定义分享内容接口span><button class&#61;"btn btn_primary" id&#61;"onMenuShareTimeline">onMenuShareTimelinebutton><span class&#61;"desc">获取“分享给朋友”按钮点击状态及自定义分享内容接口span><button class&#61;"btn btn_primary" id&#61;"onMenuShareAppMessage">onMenuShareAppMessagebutton><span class&#61;"desc">获取“分享到QQ”按钮点击状态及自定义分享内容接口span><button class&#61;"btn btn_primary" id&#61;"onMenuShareQQ">onMenuShareQQbutton><span class&#61;"desc">获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口span><button class&#61;"btn btn_primary" id&#61;"onMenuShareWeibo">onMenuShareWeibobutton><h3 id&#61;"menu-image">图像接口h3><span class&#61;"desc">拍照或从手机相册中选图接口span><button class&#61;"btn btn_primary" id&#61;"chooseImage">chooseImagebutton><span class&#61;"desc">预览图片接口span><button class&#61;"btn btn_primary" id&#61;"previewImage">previewImagebutton><span class&#61;"desc">上传图片接口span><button class&#61;"btn btn_primary" id&#61;"uploadImage">uploadImagebutton><span class&#61;"desc">下载图片接口span><button class&#61;"btn btn_primary" id&#61;"downloadImage">downloadImagebutton><h3 id&#61;"menu-voice">音频接口h3><span class&#61;"desc">开始录音接口span><button class&#61;"btn btn_primary" id&#61;"startRecord">startRecordbutton><span class&#61;"desc">停止录音接口span><button class&#61;"btn btn_primary" id&#61;"stopRecord">stopRecordbutton><span class&#61;"desc">播放语音接口span><button class&#61;"btn btn_primary" id&#61;"playVoice">playVoicebutton><span class&#61;"desc">暂停播放接口span><button class&#61;"btn btn_primary" id&#61;"pauseVoice">pauseVoicebutton><span class&#61;"desc">停止播放接口span><button class&#61;"btn btn_primary" id&#61;"stopVoice">stopVoicebutton><span class&#61;"desc">上传语音接口span><button class&#61;"btn btn_primary" id&#61;"uploadVoice">uploadVoicebutton><span class&#61;"desc">下载语音接口span><button class&#61;"btn btn_primary" id&#61;"downloadVoice">downloadVoicebutton><h3 id&#61;"menu-smart">智能接口h3><span class&#61;"desc">识别音频并返回识别结果接口span><button class&#61;"btn btn_primary" id&#61;"translateVoice">translateVoicebutton><h3 id&#61;"menu-device">设备信息接口h3><span class&#61;"desc">获取网络状态接口span><button class&#61;"btn btn_primary" id&#61;"getNetworkType">getNetworkTypebutton><h3 id&#61;"menu-location">地理位置接口h3><span class&#61;"desc">使用微信内置地图查看位置接口span><button class&#61;"btn btn_primary" id&#61;"openLocation">openLocationbutton><span class&#61;"desc">获取地理位置接口span><button class&#61;"btn btn_primary" id&#61;"getLocation">getLocationbutton><h3 id&#61;"menu-webview">界面操作接口h3><span class&#61;"desc">隐藏右上角菜单接口span><button class&#61;"btn btn_primary" id&#61;"hideOptionMenu">hideOptionMenubutton><span class&#61;"desc">显示右上角菜单接口span><button class&#61;"btn btn_primary" id&#61;"showOptionMenu">showOptionMenubutton><span class&#61;"desc">关闭当前网页窗口接口span><button class&#61;"btn btn_primary" id&#61;"closeWindow">closeWindowbutton><span class&#61;"desc">批量隐藏功能按钮接口span><button class&#61;"btn btn_primary" id&#61;"hideMenuItems">hideMenuItemsbutton><span class&#61;"desc">批量显示功能按钮接口span><button class&#61;"btn btn_primary" id&#61;"showMenuItems">showMenuItemsbutton><span class&#61;"desc">隐藏所有非基础按钮接口span><button class&#61;"btn btn_primary" id&#61;"hideAllNonBaseMenuItem">hideAllNonBaseMenuItembutton><span class&#61;"desc">显示所有功能按钮接口span><button class&#61;"btn btn_primary" id&#61;"showAllNonBaseMenuItem">showAllNonBaseMenuItembutton><h3 id&#61;"menu-scan">微信扫一扫h3><span class&#61;"desc">调起微信扫一扫接口span><button class&#61;"btn btn_primary" id&#61;"scanQRCode0">scanQRCode(微信处理结果)button><button class&#61;"btn btn_primary" id&#61;"scanQRCode1">scanQRCode(直接返回结果)button><h3 id&#61;"menu-shopping">微信小店接口h3><span class&#61;"desc">跳转微信商品页接口span><button class&#61;"btn btn_primary" id&#61;"openProductSpecificView">openProductSpecificViewbutton><h3 id&#61;"menu-card">微信卡券接口h3><span class&#61;"desc">批量添加卡券接口span><button class&#61;"btn btn_primary" id&#61;"addCard">addCardbutton><span class&#61;"desc">调起适用于门店的卡券列表并获取用户选择列表span><button class&#61;"btn btn_primary" id&#61;"chooseCard">chooseCardbutton><span class&#61;"desc">查看微信卡包中的卡券接口span><button class&#61;"btn btn_primary" id&#61;"openCard">openCardbutton><h3 id&#61;"menu-pay">微信支付接口h3><span class&#61;"desc">发起一个微信支付请求span><button class&#61;"btn btn_primary" id&#61;"chooseWXPay">chooseWXPaybutton>div>

 

/** 注意&#xff1a;* 1. 所有的JS接口只能在公众号绑定的域名下调用&#xff0c;公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。* 2. 如果发现在 Android 不能分享自定义内容&#xff0c;请到官网下载最新的包覆盖安装&#xff0c;Android 自定义分享接口需升级至 6.0.2.58 版本及以上。* 3. 完整 JS-SDK 文档地址&#xff1a;http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html*/
wx.ready(
function () {// 1 判断当前版本是否支持指定 JS 接口&#xff0c;支持批量判断document.querySelector(&#39;#checkJsApi&#39;).onclick &#61; function () {wx.checkJsApi({jsApiList: [&#39;getNetworkType&#39;,&#39;previewImage&#39;],success: function (res) {alert(JSON.stringify(res));}});};// 2. 分享接口// 2.1 监听“分享给朋友”&#xff0c;按钮点击、自定义分享内容及分享结果接口document.querySelector(&#39;#onMenuShareAppMessage&#39;).onclick &#61; function () {wx.onMenuShareAppMessage({title: &#39;互联网之子&#39;,desc: &#39;在长大的过程中&#xff0c;我才慢慢发现&#xff0c;我身边的所有事&#xff0c;别人跟我说的所有事&#xff0c;那些所谓本来如此&#xff0c;注定如此的事&#xff0c;它们其实没有非得如此&#xff0c;事情是可以改变的。更重要的是&#xff0c;有些事既然错了&#xff0c;那就该做出改变。&#39;,link: &#39;http://movie.douban.com/subject/25785114/&#39;,imgUrl: &#39;http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg&#39;,trigger: function (res) {// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容&#xff0c;因为客户端分享操作是一个同步操作&#xff0c;这时候使用ajax的回包会还没有返回alert(&#39;用户点击发送给朋友&#39;);},success: function (res) {alert(&#39;已分享&#39;);},cancel: function (res) {alert(&#39;已取消&#39;);},fail: function (res) {alert(JSON.stringify(res));}});alert(&#39;已注册获取“发送给朋友”状态事件&#39;);};// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口document.querySelector(&#39;#onMenuShareTimeline&#39;).onclick &#61; function () {wx.onMenuShareTimeline({title: &#39;互联网之子&#39;,link: &#39;http://movie.douban.com/subject/25785114/&#39;,imgUrl: &#39;http://demo.open.weixin.qq.com/jssdk/images/p2166127561.jpg&#39;,trigger: function (res) {// 不要尝试在trigger中使用ajax异步请求修改本次分享的内容&#xff0c;因为客户端分享操作是一个同步操作&#xff0c;这时候使用ajax的回包会还没有返回alert(&#39;用户点击分享到朋友圈&#39;);},success: function (res) {alert(&#39;已分享&#39;);},cancel: function (res) {alert(&#39;已取消&#39;);},fail: function (res) {alert(JSON.stringify(res));}});alert(&#39;已注册获取“分享到朋友圈”状态事件&#39;);};// 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口document.querySelector(&#39;#onMenuShareQQ&#39;).onclick &#61; function () {wx.onMenuShareQQ({title: &#39;互联网之子&#39;,desc: &#39;在长大的过程中&#xff0c;我才慢慢发现&#xff0c;我身边的所有事&#xff0c;别人跟我说的所有事&#xff0c;那些所谓本来如此&#xff0c;注定如此的事&#xff0c;它们其实没有非得如此&#xff0c;事情是可以改变的。更重要的是&#xff0c;有些事既然错了&#xff0c;那就该做出改变。&#39;,link: &#39;http://movie.douban.com/subject/25785114/&#39;,imgUrl: &#39;http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg&#39;,trigger: function (res) {alert(&#39;用户点击分享到QQ&#39;);},complete: function (res) {alert(JSON.stringify(res));},success: function (res) {alert(&#39;已分享&#39;);},cancel: function (res) {alert(&#39;已取消&#39;);},fail: function (res) {alert(JSON.stringify(res));}});alert(&#39;已注册获取“分享到 QQ”状态事件&#39;);};// 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口document.querySelector(&#39;#onMenuShareWeibo&#39;).onclick &#61; function () {wx.onMenuShareWeibo({title: &#39;互联网之子&#39;,desc: &#39;在长大的过程中&#xff0c;我才慢慢发现&#xff0c;我身边的所有事&#xff0c;别人跟我说的所有事&#xff0c;那些所谓本来如此&#xff0c;注定如此的事&#xff0c;它们其实没有非得如此&#xff0c;事情是可以改变的。更重要的是&#xff0c;有些事既然错了&#xff0c;那就该做出改变。&#39;,link: &#39;http://movie.douban.com/subject/25785114/&#39;,imgUrl: &#39;http://img3.douban.com/view/movie_poster_cover/spst/public/p2166127561.jpg&#39;,trigger: function (res) {alert(&#39;用户点击分享到微博&#39;);},complete: function (res) {alert(JSON.stringify(res));},success: function (res) {alert(&#39;已分享&#39;);},cancel: function (res) {alert(&#39;已取消&#39;);},fail: function (res) {alert(JSON.stringify(res));}});alert(&#39;已注册获取“分享到微博”状态事件&#39;);};// 3 智能接口var voice &#61; {localId: &#39;&#39;,serverId: &#39;&#39;};// 3.1 识别音频并返回识别结果document.querySelector(&#39;#translateVoice&#39;).onclick &#61; function () {if (voice.localId &#61;&#61; &#39;&#39;) {alert(&#39;请先使用 startRecord 接口录制一段声音&#39;);return;}wx.translateVoice({localId: voice.localId,complete: function (res) {if (res.hasOwnProperty(&#39;translateResult&#39;)) {alert(&#39;识别结果&#xff1a;&#39; &#43; res.translateResult);} else {alert(&#39;无法识别&#39;);}}});};// 4 音频接口// 4.2 开始录音document.querySelector(&#39;#startRecord&#39;).onclick &#61; function () {wx.startRecord({cancel: function () {alert(&#39;用户拒绝授权录音&#39;);}});};// 4.3 停止录音document.querySelector(&#39;#stopRecord&#39;).onclick &#61; function () {wx.stopRecord({success: function (res) {voice.localId &#61; res.localId;},fail: function (res) {alert(JSON.stringify(res));}});};// 4.4 监听录音自动停止
wx.onVoiceRecordEnd({complete: function (res) {voice.localId &#61; res.localId;alert(&#39;录音时间已超过一分钟&#39;);}});// 4.5 播放音频document.querySelector(&#39;#playVoice&#39;).onclick &#61; function () {if (voice.localId &#61;&#61; &#39;&#39;) {alert(&#39;请先使用 startRecord 接口录制一段声音&#39;);return;}wx.playVoice({localId: voice.localId});};// 4.6 暂停播放音频document.querySelector(&#39;#pauseVoice&#39;).onclick &#61; function () {wx.pauseVoice({localId: voice.localId});};// 4.7 停止播放音频document.querySelector(&#39;#stopVoice&#39;).onclick &#61; function () {wx.stopVoice({localId: voice.localId});};// 4.8 监听录音播放停止
wx.onVoicePlayEnd({complete: function (res) {alert(&#39;录音&#xff08;&#39; &#43; res.localId &#43; &#39;&#xff09;播放结束&#39;);}});// 4.8 上传语音document.querySelector(&#39;#uploadVoice&#39;).onclick &#61; function () {if (voice.localId &#61;&#61; &#39;&#39;) {alert(&#39;请先使用 startRecord 接口录制一段声音&#39;);return;}wx.uploadVoice({localId: voice.localId,success: function (res) {alert(&#39;上传语音成功&#xff0c;serverId 为&#39; &#43; res.serverId);voice.serverId &#61; res.serverId;}});};// 4.9 下载语音document.querySelector(&#39;#downloadVoice&#39;).onclick &#61; function () {if (voice.serverId &#61;&#61; &#39;&#39;) {alert(&#39;请先使用 uploadVoice 上传声音&#39;);return;}wx.downloadVoice({serverId: voice.serverId,success: function (res) {alert(&#39;下载语音成功&#xff0c;localId 为&#39; &#43; res.localId);voice.localId &#61; res.localId;}});};// 5 图片接口// 5.1 拍照、本地选图var images &#61; {localId: [],serverId: []};document.querySelector(&#39;#chooseImage&#39;).onclick &#61; function () {wx.chooseImage({success: function (res) {images.localId &#61; res.localIds;alert(&#39;已选择 &#39; &#43; res.localIds.length &#43; &#39; 张图片&#39;);}});};// 5.2 图片预览document.querySelector(&#39;#previewImage&#39;).onclick &#61; function () {wx.previewImage({current: &#39;http://img5.douban.com/view/photo/photo/public/p1353993776.jpg&#39;,urls: [&#39;http://img3.douban.com/view/photo/photo/public/p2152117150.jpg&#39;,&#39;http://img5.douban.com/view/photo/photo/public/p1353993776.jpg&#39;,&#39;http://img3.douban.com/view/photo/photo/public/p2152134700.jpg&#39;]});};// 5.3 上传图片document.querySelector(&#39;#uploadImage&#39;).onclick &#61; function () {if (images.localId.length &#61;&#61; 0) {alert(&#39;请先使用 chooseImage 接口选择图片&#39;);return;}var i &#61; 0, length &#61; images.localId.length;images.serverId &#61; [];function upload() {wx.uploadImage({localId: images.localId[i],success: function (res) {i&#43;&#43;;alert(&#39;已上传&#xff1a;&#39; &#43; i &#43; &#39;/&#39; &#43; length);images.serverId.push(res.serverId);if (i < length) {upload();}},fail: function (res) {alert(JSON.stringify(res));}});}upload();};// 5.4 下载图片document.querySelector(&#39;#downloadImage&#39;).onclick &#61; function () {if (images.serverId.length &#61;&#61;&#61; 0) {alert(&#39;请先使用 uploadImage 上传图片&#39;);return;}var i &#61; 0, length &#61; images.serverId.length;images.localId &#61; [];function download() {wx.downloadImage({serverId: images.serverId[i],success: function (res) {i&#43;&#43;;alert(&#39;已下载&#xff1a;&#39; &#43; i &#43; &#39;/&#39; &#43; length);images.localId.push(res.localId);if (i < length) {download();}}});}download();};// 6 设备信息接口// 6.1 获取当前网络状态document.querySelector(&#39;#getNetworkType&#39;).onclick &#61; function () {wx.getNetworkType({success: function (res) {alert(res.networkType);},fail: function (res) {alert(JSON.stringify(res));}});};// 7 地理位置接口// 7.1 查看地理位置document.querySelector(&#39;#openLocation&#39;).onclick &#61; function () {wx.openLocation({latitude: 23.099994,longitude: 113.324520,name: &#39;TIT 创意园&#39;,address: &#39;广州市海珠区新港中路 397 号&#39;,scale: 14,infoUrl: &#39;http://weixin.qq.com&#39;});};// 7.2 获取当前地理位置document.querySelector(&#39;#getLocation&#39;).onclick &#61; function () {wx.getLocation({success: function (res) {alert(JSON.stringify(res));},cancel: function (res) {alert(&#39;用户拒绝授权获取地理位置&#39;);}});};// 8 界面操作接口// 8.1 隐藏右上角菜单document.querySelector(&#39;#hideOptionMenu&#39;).onclick &#61; function () {wx.hideOptionMenu();};// 8.2 显示右上角菜单document.querySelector(&#39;#showOptionMenu&#39;).onclick &#61; function () {wx.showOptionMenu();};// 8.3 批量隐藏菜单项document.querySelector(&#39;#hideMenuItems&#39;).onclick &#61; function () {wx.hideMenuItems({menuList: [&#39;menuItem:readMode&#39;, // 阅读模式&#39;menuItem:share:timeline&#39;, // 分享到朋友圈&#39;menuItem:copyUrl&#39; // 复制链接
],success: function (res) {alert(&#39;已隐藏“阅读模式”&#xff0c;“分享到朋友圈”&#xff0c;“复制链接”等按钮&#39;);},fail: function (res) {alert(JSON.stringify(res));}});};// 8.4 批量显示菜单项document.querySelector(&#39;#showMenuItems&#39;).onclick &#61; function () {wx.showMenuItems({menuList: [&#39;menuItem:readMode&#39;, // 阅读模式&#39;menuItem:share:timeline&#39;, // 分享到朋友圈&#39;menuItem:copyUrl&#39; // 复制链接
],success: function (res) {alert(&#39;已显示“阅读模式”&#xff0c;“分享到朋友圈”&#xff0c;“复制链接”等按钮&#39;);},fail: function (res) {alert(JSON.stringify(res));}});};// 8.5 隐藏所有非基本菜单项document.querySelector(&#39;#hideAllNonBaseMenuItem&#39;).onclick &#61; function () {wx.hideAllNonBaseMenuItem({success: function () {alert(&#39;已隐藏所有非基本菜单项&#39;);}});};// 8.6 显示所有被隐藏的非基本菜单项document.querySelector(&#39;#showAllNonBaseMenuItem&#39;).onclick &#61; function () {wx.showAllNonBaseMenuItem({success: function () {alert(&#39;已显示所有非基本菜单项&#39;);}});};// 8.7 关闭当前窗口document.querySelector(&#39;#closeWindow&#39;).onclick &#61; function () {wx.closeWindow();};// 9 微信原生接口// 9.1.1 扫描二维码并返回结果document.querySelector(&#39;#scanQRCode0&#39;).onclick &#61; function () {wx.scanQRCode();};// 9.1.2 扫描二维码并返回结果document.querySelector(&#39;#scanQRCode1&#39;).onclick &#61; function () {wx.scanQRCode({needResult: 1,desc: &#39;scanQRCode desc&#39;,success: function (res) {alert(JSON.stringify(res));}});};// 10 微信支付接口// 10.1 发起一个支付请求document.querySelector(&#39;#chooseWXPay&#39;).onclick &#61; function () {// 注意&#xff1a;此 Demo 使用 2.7 版本支付接口实现&#xff0c;建议使用此接口时参考微信支付相关最新文档。
wx.chooseWXPay({timestamp: 1414723227,nonceStr: &#39;noncestr&#39;,package: &#39;addition&#61;action_id%3dgaby1234%26limit_pay%3d&bank_type&#61;WX&body&#61;innertest&fee_type&#61;1&input_charset&#61;GBK¬ify_url&#61;http%3A%2F%2F120.204.206.246%2Fcgi-bin%2Fmmsupport-bin%2Fnotifypay&out_trade_no&#61;1414723227818375338&partner&#61;1900000109&spbill_create_ip&#61;127.0.0.1&total_fee&#61;1&sign&#61;432B647FE95C7BF73BCD177CEECBEF8D&#39;,signType: &#39;SHA1&#39;, // 注意&#xff1a;新版支付接口使用 MD5 加密paySign: &#39;bd5b1933cda6e9548862944836a9b52e8c9a2b69&#39;});};// 11.3 跳转微信商品页document.querySelector(&#39;#openProductSpecificView&#39;).onclick &#61; function () {wx.openProductSpecificView({productId: &#39;pDF3iY_m2M7EQ5EKKKWd95kAxfNw&#39;});};// 12 微信卡券接口// 12.1 添加卡券document.querySelector(&#39;#addCard&#39;).onclick &#61; function () {wx.addCard({cardList: [{cardId: &#39;pDF3iY9tv9zCGCj4jTXFOo1DxHdo&#39;,cardExt: &#39;{"code": "", "openid": "", "timestamp": "1418301401", "signature":"64e6a7cc85c6e84b726f2d1cbef1b36e9b0f9750"}&#39;},{cardId: &#39;pDF3iY9tv9zCGCj4jTXFOo1DxHdo&#39;,cardExt: &#39;{"code": "", "openid": "", "timestamp": "1418301401", "signature":"64e6a7cc85c6e84b726f2d1cbef1b36e9b0f9750"}&#39;}],success: function (res) {alert(&#39;已添加卡券&#xff1a;&#39; &#43; JSON.stringify(res.cardList));}});};// 12.2 选择卡券document.querySelector(&#39;#chooseCard&#39;).onclick &#61; function () {wx.chooseCard({cardSign: &#39;97e9c5e58aab3bdf6fd6150e599d7e5806e5cb91&#39;,timestamp: 1417504553,nonceStr: &#39;k0hGdSXKZEj3Min5&#39;,success: function (res) {alert(&#39;已选择卡券&#xff1a;&#39; &#43; JSON.stringify(res.cardList));}});};// 12.3 查看卡券document.querySelector(&#39;#openCard&#39;).onclick &#61; function () {alert(&#39;您没有该公众号的卡券无法打开卡券。&#39;);wx.openCard({cardList: []});};var shareData &#61; {title: &#39;微信JS-SDK Demo&#39;,desc: &#39;微信JS-SDK,帮助第三方为用户提供更优质的移动web服务&#39;,link: &#39;http://demo.open.weixin.qq.com/jssdk/&#39;,imgUrl: &#39;http://mmbiz.qpic.cn/mmbiz/icTdbqWNOwNRt8Qia4lv7k3M9J1SKqKCImxJCt7j9rHYicKDI45jRPBxdzdyREWnk0ia0N5TMnMfth7SdxtzMvVgXg/0&#39;};wx.onMenuShareAppMessage(shareData);wx.onMenuShareTimeline(shareData);
});wx.error(
function (res) {alert(res.errMsg);
});


转:https://www.cnblogs.com/dekevin/p/4878244.html



推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • ButterKnife 是一款用于 Android 开发的注解库,主要用于简化视图和事件绑定。本文详细介绍了 ButterKnife 的基础用法,包括如何通过注解实现字段和方法的绑定,以及在实际项目中的应用示例。此外,文章还提到了截至 2016 年 4 月 29 日,ButterKnife 的最新版本为 8.0.1,为开发者提供了最新的功能和性能优化。 ... [详细]
  • POJ3669题目解析:基于广度优先搜索的详细解答
    POJ3669(http://poj.org/problem?id=3669)是一道典型的广度优先搜索(BFS)问题。由于陨石的降落具有时间属性,导致地图状态会随时间动态变化。因此,可以利用结构体来记录每个陨石的降落时间和位置,从而有效地进行状态更新和路径搜索。 ... [详细]
  • 深入解析:Synchronized 关键字在 Java 中对 int 和 Integer 对象的作用与影响
    深入探讨了 `Synchronized` 关键字在 Java 中对 `int` 和 `Integer` 对象的影响。尽管初看此题似乎简单,但其实质在于理解对象的概念。根据《Java编程思想》第二章的观点,一切皆为对象。本文详细分析了 `Synchronized` 关键字在不同数据类型上的作用机制,特别是对基本数据类型 `int` 和包装类 `Integer` 的区别处理,帮助读者深入理解 Java 中的同步机制及其在多线程环境中的应用。 ... [详细]
  • Unity3D 中 AsyncOperation 实现异步场景加载及进度显示优化技巧
    在Unity3D中,通过使用`AsyncOperation`可以实现高效的异步场景加载,并结合进度条显示来提升用户体验。本文详细介绍了如何利用`AsyncOperation`进行异步加载,并提供了优化技巧,包括进度条的动态更新和加载过程中的性能优化方法。此外,还探讨了如何处理加载过程中可能出现的异常情况,确保加载过程的稳定性和可靠性。 ... [详细]
  • 微信小程序实现类似微博的无限回复功能,内置云开发数据库支持
    本文详细介绍了如何利用微信小程序实现类似于微博的无限回复功能,并充分利用了微信云开发的数据库支持。文中不仅提供了关键代码片段,还包含了完整的页面代码,方便开发者按需使用。此外,HTML页面中包含了一些示例图片,开发者可以根据个人喜好进行替换。文章还将展示详细的数据库结构设计,帮助读者更好地理解和实现这一功能。 ... [详细]
  • 本文探讨了资源访问的学习路径与方法,旨在帮助学习者更高效地获取和利用各类资源。通过分析不同资源的特点和应用场景,提出了多种实用的学习策略和技术手段,为学习者提供了系统的指导和建议。 ... [详细]
  • 本文详细介绍了在 Vue.js 前端框架中集成 vue-i18n 插件以实现多语言支持的方法。通过具体的配置步骤和示例代码,帮助开发者快速掌握如何在项目中实现国际化功能,提升用户体验。同时,文章还探讨了常见的多语言切换问题及解决方案,为开发人员提供了实用的参考。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • Win10 S系统与Chrome浏览器兼容性问题分析
    2017年5月2日,微软在美国推出了最新的Windows 10 S操作系统,专为教育领域设计,旨在为教师和学生提供一系列高效的产品和服务。该系统的最大特点是其简洁的设计和快速的响应速度,然而在与某些应用的兼容性方面,特别是Chrome浏览器,仍存在一些问题。本文将深入分析这些兼容性问题,并探讨可能的解决方案。 ... [详细]
  • 最新消息显示,苹果即将发布的新一代iOS系统可能将集成先进的3D地图功能。这一创新技术由C3 Technologies公司开发,曾在今年3月被TechCrunch报道。用户可以通过该功能获得更加真实和沉浸式的地图体验,包括详细的建筑物模型和街景视图。视频演示展示了其卓越的视觉效果和交互性。 ... [详细]
  • 本文详细探讨了 jQuery 中 `ajaxSubmit` 方法的使用技巧及其应用场景。首先,介绍了如何正确引入必要的脚本文件,如 `jquery.form.js` 和 `jquery-1.8.0.min.js`。接着,通过具体示例展示了如何利用 `ajaxSubmit` 方法实现表单的异步提交,包括数据的发送、接收和处理。此外,还讨论了该方法在不同场景下的应用,如文件上传、表单验证和动态更新页面内容等,提供了丰富的代码示例和最佳实践建议。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
author-avatar
nct6778550
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有