精华内容
下载资源
问答
  • 在很多web项目中都存在这样的需求,用户执行某个操作或者数据库CURD,同时后台页面接收消息并弹窗提示当前操作系统的管理员。 我们这里采用微软的SignalR实时 web 功能使服务器端代码可以立即将内容推送到客户端。...

           在很多web项目中都存在这样的需求,用户执行某个操作或者数据库CURD,同时后台页面接收消息并弹窗提示当前操作系统的管理员。

            我们这里采用微软的SignalR实时 web 功能使服务器端代码可以立即将内容推送到客户端。基础知识和安装请参照微软官方文档。我们今天的重点是WTM框架加入SignalR

    一、服务端

    在WTM项目中的Program.cs配置SignalR。

    1、webBuilder.ConfigureServices方法中添加

    x.AddSignalR();

    2、webBuilder.Configure方法中添加

     x.UseEndpoints(endpoints =>
                             {
                                 endpoints.MapHub<ChatHub>("/chathub");
                             });

       3、创建 SignalR 中心

    using Microsoft.AspNetCore.SignalR;
    using System.Threading.Tasks;
    
    namespace SignalRChat.Hubs
    {
        public class ChatHub : Hub
        {
            public async Task SendMessage(string user, string message)
            {
                await Clients.All.SendAsync("ReceiveMessage", user, message);
            }
        }
    }

        4、修改_Layout.cshtml布局文件,文件位于Views/Shared目录下

         将按照微软官方文档获取的signalr.js引入到文件中,然后编写SignalR连接和消息接收处理代码

    <body>
        <div id="LAY_app"></div>
    <script src="~/js/signalr/dist/browser/signalr.js"></script>
        <script src="/jquery.min.js"></script>
        <script src="/jquery.cookie.js"></script>
        <script src="/layui/layui.js"></script>
        <script src="/_js/framework_layui.js?time=@DateTime.Now.Ticks"></script>
    <script>
        var DONOTUSE_IGNOREHASH = false;
        var DONOTUSE_COOKIEPRE = '@ViewData["DONOTUSE_COOKIEPRE"]';
        var DONOTUSE_WINDOWGUID = '@Guid.NewGuid().ToString().Replace("-", "")';
        layui.config({
            base: '/layuiadmin/'
            , version: '@DateTime.Now.Ticks'
        });
         //创建连接
         const connection = new signalR.HubConnectionBuilder()
            .withUrl("/chathub")
            .configureLogging(signalR.LogLevel.Information)
            .build();
    
        async function start() {
            try {
                await connection.start();
                console.log("SignalR Connected.");
            } catch (err) {
                console.log(err);
                setTimeout(start, 5000);
            }
        };
    
        connection.onclose(start);
        start();
        //接收数据并弹窗
            connection.on("ReceiveMessage", function (user, message) {
    
                layui.use('layer', function(){
                    var layer = layui.layer;
                    layer.msg(user+'||'+message, { time: 5000, icon: 6 });
                });     
    
            console.log(message);
        });
       
        </script>
        @RenderBody()
    </body>

     二、客户端

    1、安装 SignalR .net 客户端包Microsoft.AspNetCore.SignalR.Client

    2、在需要发送数据的后台方法中添加如下代码,就可以完成想后台服务器的数据发送

    try
      {
         HubConnection connection = new HubConnectionBuilder()
                                .WithUrl(signalrUrl)
                                .Build();
         await connection.StartAsync();
         await connection.InvokeAsync("SendMessage",
         $"{user.UserType.UserTypeName}客户端", $"{DateTime.Now}数据发送");
       }
    catch (Exception)
        {
        }

    这样就完成了客户端的一些操作实时向服务器推送消息。SignalR除了支持.NET外,还支持java和js。编写实时应用非常的方便。只需要很少的代码就能时间服务器和客户端的实时通信,让程序员更专注的写代码。

    三、部署

    部署到iis必须在Windows功能勾选websocket协议

     

     

    展开全文
  • 最近在开发一个网页端的客服系统,需求要求聊天双方接收到消息能有语音提醒,并且客服端如果存在未读消息要求每隔五分钟给客服语音提醒一下。客服聊天系统使用PHP的Workerman框架进行开发,由于语音提醒实现的功能...
  • 分享给大家供大家参考,具体如下:综述最近在开发一个网页端的客服系统,需求要求聊天双方接收到消息能有语音提醒,并且客服端如果存在未读消息要求每隔五分钟给客服语音提醒一下。客服聊天系统使用PHP的Workerman...

    本文实例讲述了JS(jQuery)实现聊天接收到消息语言自动提醒功能。分享给大家供大家参考,具体如下:

    综述

    最近在开发一个网页端的客服系统,需求要求聊天双方接收到消息能有语音提醒,并且客服端如果存在未读消息要求每隔五分钟给客服语音提醒一下。客服聊天系统使用PHP的Workerman框架进行开发,由于语音提醒实现的功能一样,故而在本篇博文中从简描述,只进行定时循环提醒的功能记录,不说实时的那个语音提醒,因为思路都是一样的,主要是看如何实现自动播放语音功能。

    思路

    实时提醒

    这个就比较明确了,就是在接收到消息的同时进行语音播放,大家可以根据自己的逻辑进行将代码放到合适的地方。

    定时提醒

    这个主要首先判断客户是否存在未读的消息,如果存在则语音提醒,如果不存在,则不进行提醒。故而要在HTML页面写一个定时器,每五分钟访问一次接口,查询客服是否存在未读消息,然后在后台开发一个接口用于返回客户是否存在未读消息。

    代码实现

    JS实现聊天接收到消息语言自动提醒(您有新的消息请注意查收)

    #audio_click {

    margin-top: 32px;

    height: 40px;

    }

    #audio_click a {

    text-decoration: none;

    background: #2f435e;

    color: #f2f2f2;

    padding: 10px 30px 10px 30px;

    font-size: 16px;

    font-family: 微软雅黑, 宋体, Arial, Helvetica, Verdana, sans-serif;

    font-weight: bold;

    border-radius: 3px;

    -webkit-transition: all linear 0.30s;

    -moz-transition: all linear 0.30s;

    transition: all linear 0.30s;

    }

    #audio_click a:hover {

    background: #385f9e;

    }

    JS实现聊天接收到消息语言自动提醒

    (您有新的消息请注意查收)

    $(function () {

    var html = '';

    html += '';

    //格式ogg音频地址

    html += '';

    //格式mp3音频地址

    html += '';

    //格式wav音频地址

    html += '';

    html += '';

    //将代码写入到页面中

    $(html).appendTo("#audio_play");

    //轮询ajax检测未读消息,每五分钟

    var setTime = setInterval(function () {

    $.ajax({

    type: "post",

    url: "{:url('index/getNoReadMsg')}", //查询客服是否有未读消息

    dataType: "json",

    success: function (ret) {

    if (ret.code == 1) {

    //有则进行播放语音提醒

    $('#audioPlay')[0].play();

    }

    }

    });

    }, 300000);

    });

    $("#btn_audio").click(function () {

    //这就代码就是播放语音的关键代码

    $('#audioPlay')[0].play();

    });

    下载

    本源码包文件我已经上传到资源库中,有需要的童鞋可以自行下载,里面包含代码和音频文件。

    完整实例代码点击此处本站下载。

    之后将代码中相应的资源路径修改之后即可使用。

    希望本文所述对大家JavaScript程序设计有所帮助。

    展开全文
  • 使用WebSocket解决页面数据实时同步

    千次阅读 2018-11-20 11:06:21
    一个页面需要在不同的PC端访问,在某一PC端对网页内容发生改变时,其他PC端页面数据实时更新显示. 实现: 采用webSocket+AOP通知的方式实现 思路: 当页面数据修改时,会通过后端保存方法存进数据库,这样我们就要一个...

    功能:

    一个页面需要在不同的PC端访问,在某一PC端对网页内容发生改变时,其他PC端页面数据实时更新显示.

    实现:

    采用webSocket+AOP通知的方式实现

    思路:

    当页面数据修改时,会通过后端保存方法存进数据库,这样我们就要一个入口,当数据保存方法被调用执行完后(AOP后置通知),触发webSocket消息机制,向前端发送更新提示,前端调用更新方法进行页面更新.

    实现过程:

    在网上有很多关于webSocket的实现和总结,这里我就不一一叙述,大家有兴趣可以在网上查阅,但是大致实现方式我总结有三种;

    第一种:原生实现方式

    第二种:spring管理的方式

    第三种:springBoot管理的方式

    我采用的是第三种,大家可以根据自己项目的结构和框架来选择使用哪种方式,但是原理都是一样的,只是代码的写法可能略有不同而已.

    代码:

    前端:

    function webSocket() {
        var websocket = null;
        //判断当前浏览器是否支持WebSocket
        if (typeof(WebSocket) == "undefined") {
            alert('当前浏览器 Not support websocket');
        }
        else {
    
            //建立连接,这里的/websocket ,是Servlet中注解中的那个值
            console.log("support websocket");
            var id =ground.userID;
            websocket = new WebSocket("ws://" + window.location.host + "/项目名/websocket/"+ id);
        }
        //连接发生错误的回调方法
        websocket.onerror = function () {
            console.log("WebSocket连接发生错误");
        };
        //连接成功建立的回调方法
        websocket.onopen = function () {
            console.log("WebSocket连接成功");
        }
        //接收到消息的回调方法
        websocket.onmessage = function () {
            console.log("数据更新啦");
            loadfg();
        }
        //连接关闭的回调方法
        websocket.onclose = function () {
            console.log("WebSocket连接关闭");
        }
        //监听窗口关闭事件,当窗口关闭时,主动去关闭WebSocket连接,防止连接还没断开就关闭窗口,server端会抛异常。
        window.onbeforeunload = function () {
            websocket.close();
        }
    }
    

    后端:核心类WebSocketServer用于连接前端,完成前后端通信

    @Slf4j
    @ServerEndpoint(value = "/websocket/{id}", configurator = MyEndpointConfigure.class)
    @Controller
    public class WebSocketServer {
    
        private Map<String, Session> map;
    
        // 与某个客户端的连接会话,需要通过它来给客户端发送数据
        private Session session;
    
        private String id;
    
        /**
         * @param session websocket连接sesson
         * @DESC <p>注解{@link OnOpen} 声明客户端连接进入的方法</p>
         */
        @OnOpen
        public void onOpen(@PathParam("id") String id, Session session) {
            log.debug("连接成功");
            this.session = session;
            this.id = id;
            log.debug(this.id);
            map = WebSet.getInstance();
            // 将连接session对象存入map
            map.put(this.id, session);
        }
    
        /**
         * <p>{@link OnClose} 关闭连接</p>
         */
        @OnClose
        public void onClose() {
            log.debug("连接关闭---关闭id" + this.id);
    
        }
    
        /**
         * <p>{@link OnMessage} 消息监听处理方法</p>
         *
         * @throws IOException 异常
         */
        @OnMessage
        public void onMessage(String message) {
            log.debug(message);
        }
    
        /**
         * <p>{@link OnError} websocket系统异常处理</p>
         *
         * @param t 异常
         */
        @OnError
        public void onError(Throwable t) {
            log.error(t + "连接异常");
            t.printStackTrace();
        }
    
        public void send(String date) {
            log.debug("开始发送消息");
            try {
                Iterator<String> iter = map.keySet().iterator();
                while (iter.hasNext()) {
                    String key = iter.next();
                    if (map.get(key).isOpen()) {
                        if (key.equals(date)) {
                            map.get(key).getBasicRemote().sendText(JSON.toJSONString(ids[0]));
                            log.debug("消息发送");
                        }
                    } else {
                        log.debug("已经断开连接的有..." + key);
                        //删除断开的连接
                        iter.remove();
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    这个方法里面有的做法和网上的案例有一些细微的不同,因为我在测试的时候发现采用网上的关闭页面调用页面关闭触发方法,在方法内删除当前id的方式在实际中会有问题,因为他删除的总是最后一个访问websocket的页面的session,所以导致要么最后一个页面收不到消息,要么第二个人关闭页面时后台会报错,所以我在页面关闭触发方法里面没有做session删除的处理,而是在发送消息时做了isOpen()判断,为true时就是session处于连接状态,为false时就是处于断开状态,而在false时我做了删除session处理,将断开的session删除.这样就可以保证不会将处于连接状态的session删除

    后端:MyEndpointConfigure这个类我没有太多去研究,也是网上拷的,但我个人理解的话这个类应该是用来生成webSocket对象的,如果我的理解有问题,各位大牛一定一定要私信我,拜谢!!

    public class MyEndpointConfigure extends ServerEndpointConfig.Configurator implements ApplicationContextAware
    {
        private static volatile BeanFactory context;
    
        @Override
        public <T> T getEndpointInstance(Class<T> clazz) throws InstantiationException
        {
            return context.getBean(clazz);
        }
    
        @Override
        public void setApplicationContext(ApplicationContext applicationContext) throws BeansException
        {
            MyEndpointConfigure.context = applicationContext;
        }
    }

    后端:WebSocketConfig类,这个类就很重要了,这个类是用来将webSocket注入到spring容器中的,如果不使用这个类的话,是没用办法在webSocket类中去使用@Autowired注解应用对象的

    @Configuration
    public class WebSocketConfig {
    
        private MyEndpointConfigure myEndpointConfigure;
    
       @Bean
       public MyEndpointConfigure newConfigure()
       {
           return new MyEndpointConfigure();
       }
    
    }

    后端:AOP类,这个类就是一个AOP后置通知,具体的注解或者aop的通知机制,不清楚的小伙伴,可以去找相关资料回顾一下

    @Aspect
    @Component
    @Slf4j
    public class AopLogging {
    
        @Autowired
        private WebSocketServer webSocketServer;
     
        @After("execution(*com.it.web.bs.t.i.controller.InspectorController.save(..))")
        public void after(){
            log.debug("后置通知进入");
            webSocketServer.onMessage("1");
        }
    
    }

    * 代表该方法为所有类型和所有返回值类型,括号里的..表示该方法的所有类型参数
    意思就是只要在这个包下的这个类里面的所有的save方法,不管返回值类型和参数类型,只要执行这个类里面名为save的方法后置通知方法就会被触发,当然如果这个类里面有很多重载的save方法,而我们只需要其中某个方法去触发后置通知,就不能用*和..表示了

    个人项目总结:

    在实现功能期间,遇到过很多问题,首先是前后端连接不通,一定要注意加上项目名称,并且保证项目名称没有问题,还有就是连接地址没有问题大小写_和-等等,都是细心的问题;

    遇到的最大的问题就是只有一个PC端页面能接收到更新的提示而其他页面没有反应,通过断点,查看日志等方式,发现同一个页面在不同浏览器和PC端打开,连接后端生成的webSocket都是同一个对象,所以在存储进集合(之前用的set)中时后面一个连接的对象会将前面一个对象覆盖掉(因为set的不可重复的),后来改用map集合,当前时间为键,webSocket对象为值,遍历集合才发现这一个问题,一直苦苦思索解决办法,也问了很多人,但是一直没有结果,后来研究代码发现,最终往前端发送消息是用webSocket中的session来完成的,突然灵光一闪,虽然webSocket是相同的,但是session肯定是不一样的(这个原因就不阐述了,相信大家都知道),既然最后的是通过session通信的,所以我就将之前的往集合里面添加webSocket对象改为往集合中添加当前Session对象,由于业务需求,就将用户名设置为了key.

    结束语:

    我也是第一次使用webSocket,如果有问题的地方大家可以以前研究探讨,如果我上述说的有问题或大家遇到什么问题,请私信我,拜谢!!

    展开全文
  • 支持离线推送,但是功能毕竟单一,就是在手机消息通知栏提示,点击该提示可以唤醒APP或打开网页。 如: 你的微信没启动,别人给你发消息时,手机通知栏就会有一个提示,你点击提示就打开了微信应用。 3. 透传消息 ...

    一、PUSH

    push是一种服务端向客户端发实时送通知的技术。
    常用的使用场景如:

    1. 消息提示。
    2. 事件提示。
    3. 内容推送。

    二、分类

    1. 通知消息

    支持离线推送,但是功能毕竟单一,就是在手机消息通知栏提示,点击该提示可以唤醒APP或打开网页。
    如:
    你的微信没启动,别人给你发消息时,手机通知栏就会有一个提示,你点击提示就打开了微信应用。

    通知类消息能否点击打开应用后进行自定义逻辑操作呢?当然可以!不是支持点击打开网页吗,去看看UrlScheme

    3. 透传消息

    只能在线推送,可以携带参数,收到消息的处理逻辑可由在应用中定制。
    如:
    你的维修已启动,别人给你发消息时,微信聊天列表上会有一个红点标记。
    如果是用的QQ,还能直接在其他页面上弹出一个对话框。

    三、现状

    1. Android

    因为谷歌的FCM通道被墙,国内的push百花齐放。
    有三方公司做这push服务,也有部分厂商自己创建系统级的push服务。
    整体事态对开发者接入十分不友好,导致安卓的送达率不太可靠。
    前面统一推送联盟的出现有可能挽救这样的局面,但暂时还需等待。

    2. iOS

    苹果的iOS系统统一使用APS通道,开发者只需对接苹果服务器即可完美送达。
    这一块上iOS系统还是毕竟省心。

    四、方案

    1. 统一推送联盟

    统一推送联盟这个是要是成功推广了,是最完美的解决方案。
    虽然成立3年了,但是目前在整体市场上的影响还有限。

    2. 各厂商推送

    可保在接入厂商的手机上实现离线消息推送,但接入。
    主要厂商有小米、华为、oppo、vivo、魅族等。

    3. 三方推送

    三方提供了对单独的push服务,主要有个推、极光等。

    如果你是Dcloud的用户,建议直接使用unipush,它使用个推的push服务并整合各厂商的push接口,是目前比较方便的接入方案。

    展开全文
  • Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域。 消息队列 什么是消息队列呢? 例如在网站注册时,一般是同步的,当接收到短信后网页才会提示注册成功。如果...
  • 前些天,要实现一个功能。在后台,一些信息是要实时提醒给后台管理员。用的是通过ajax获取最新信息,然后在前台提示;原来系统自带的是弹出一个对话框,然后...思路是:通过ajax访问后台,若有新消息,则将网页的ti...
  • 前些天,要实现一个功能。在后台,一些信息是要实时提醒给后台管理员。用的是通过ajax获取最新信息,然后在前台提示;原来系统自带的是弹出一个对话框,然后...思路是:通过ajax访问后台,若有新消息,则将网页的ti...
  • Kafka笔记

    2021-04-13 16:15:30
    Kafka是一个基于发布、订阅的分布式消息队列,用于大数据实时处理。 为什么要用kafka? 注册信息的过程,先在网站上填写注册信息,后台会调用其他服务的接口,反馈给网页注册成功信息,最后再显示给用户, 并且将短信发送...
  • 随着Internet的飞速发展越来越多的人们每天都要访问各种不同的Internet站点使用浏览器访问到的站点既有静态的文本图像也有游动的动画信息框以及不断变化的状态栏提示动态变换的时钟信息等有的页面甚至还有需要填写并...
  • JavaScript完全入门.zip

    2020-03-13 15:34:49
    随着 Internet 的飞速发展,越来越多的人每天都要...有的页面甚至还有需要填写并提交的消息框,以及非常新颖的网页特效。页面上这些实时的、动态的、可交互的网页效果就可以通过使用 JavaScript 语言编写代码来实现。
  • 广告神盾 v1.0.0.28

    2019-11-05 05:18:47
    3、上网冲浪免骚扰:自动屏蔽上网期间出现的各种常用软件消息窗口、提示窗口、资讯窗口。 4、个人隐私防泄露:智能阻断收集个人隐私的广告插件、脚本代码,保护个人上网隐私安全。 5、网页浏览加速:加速网页访问...
  • ADSafe广告管家 v138

    2019-11-05 10:30:10
    上网冲浪免骚扰:许多软件在使用的时候会频繁弹出消息提示或者各种新闻,相当很令人反感。广告管家能自动屏蔽上网期间出现的各种常用软件消息窗口、提示窗口、资讯窗口,轻松上网无打扰。3。个人隐私防泄露:现在...
  • 我近期使用Ajax 技术做网页的局部更新,为了方便数据实时更新使用。然后加了个下载功能,为了实现软件的用户体验效果,所以加了一个MessageBox.Show(),原本我知道Ajax弹出消息框会出错,但是那天很奇怪运行正常。 ...
  • 服务端系统采用WebSocket协议,消息传递实时高效,系统支持手机、平板等访问; 2、全网页配置操作,后台管理系统可控制任何用户组权限,让游客、会员、讲师、助理等用户使用时快速上手,管理简约而不简单; 3、推广...
  • 3、上网冲浪免骚扰:自动屏蔽上网期间出现的各种常用软件消息窗口、提示窗口、资讯窗口。 4、个人隐私防泄露:智能阻断收集个人隐私的广告插件、脚本代码,保护个人上网隐私安全。 5、网页浏览加速:加速 网页访问...
  • 广告管家能自动屏蔽上网期间出现的各种常用软件消息窗口、提示窗口、资讯窗口,轻松上网无打扰。 3、个人隐私防泄露: 现在人们都用电脑来处理和保存各种隐私数据,诸如照片、视频、帐号密码等重要信息。广告管家...
  • 搜狗浏览器 3.0.0.2992

    2011-09-28 17:18:12
    2.修复网页消息提醒中对单引号的转义显示。 搜狗高速浏览器3.0i更新内容: 1.修复后台模块的稳定性问题 2.修复应用系统和网页消息提醒的细节问题 搜狗高速浏览器3.0 2949 正式版 更新内容: 1. 修复一个可能造成...
  • 爱莎网络监控器是一款功能丰富、简易实用、操作简单的网络监控软件。它可以仅通过局域网中任意一台主机的安装,达到监控整个局域网的...22-可以批量关闭或重启局域网内的计算机,可以自定义关闭或重启的时间及消息提示
  • 网络幽狗是一款功能丰富、简易实用、操作简单的网络监控软件。它可以仅通过局域网中任意一台主机的安装,达到监控整个局域网的目的...22-可以批量关闭或重启局域网内的计算机,可以自定义关闭或重启的时间及消息提示
  • 网络幽狗。。。vip版

    2011-06-22 22:38:01
    3-新增消息窗口弹出功能,可以在有指定事件发生时弹出消息窗口以提示。 4-新增流量记录监控功能,可以时时掌控各个主机的流量。 4.2版本新增功能  1-新增口令验证功能,可以通过设置口令来防止其他人使用本软件。 ...
  • 超实用的jQuery代码段

    2019-03-04 10:20:41
    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...
  • 方便的网页扩展功能,主页底部要添加任何文字、图片或代码(例如加入百度搜索框、添加网站ICP备案信息),均可放入“网页扩展”中,无需修改源代码。 强大的广告管理功能,网店标志、大小横幅、广告图片、侧边对联...
  • 普通电子邮件、实时QQ交谈。 ○超强的会员搜索功能,可根据会员ID、姓名、邮箱、电话、QQ、注册时间等条件搜索会员。 ○邮件群发功能,可向会员邮箱群发普通电子邮件。 ○支持jmail、cdonts两种方式发送邮件。 ...
  • 方便的网页扩展功能,主页底部要添加任何文字、图片或代码(例如加入百度搜索框、添加网站ICP备案信息),均可放入“网页扩展”中,无需修改源代码。 强大的广告管理功能,网店标志、大小横幅、广告图片、侧边对联...
  • 普通电子邮件、实时QQ交谈。 ○超强的会员搜索功能,可根据会员ID、姓名、邮箱、电话、QQ、注册时间等条件搜索会员。 ○邮件群发功能,可向会员邮箱群发普通电子邮件。 ○支持jmail、cdonts两种方式发送邮件。 ...
  • 服装代理加盟商城.rar

    2019-07-05 23:05:50
    普通电子邮件、实时QQ交谈。 ○超强的会员搜索功能,可根据会员ID、姓名、邮箱、电话、QQ、注册时间等条件搜索会员。 ○邮件群发功能,可向会员邮箱群发普通电子邮件。 ○支持jmail、cdonts两种方式发送邮件。 ...
  • 普通电子邮件、实时QQ交谈。 ○超强的会员搜索功能,可根据会员ID、姓名、邮箱、电话、QQ、注册时间等条件搜索会员。 ○邮件群发功能,可向会员邮箱群发普通电子邮件。 ○支持jmail、cdonts两种方式发送邮件。 ○...
  • 仿凡客网上购物系统

    2013-04-19 10:58:54
    ○方便的网页扩展功能,主页底部要添加任何文字、图片或代码(例如加入百度搜索框、添加网站ICP备案信息),均可放入“网页扩展”中,无需修改源代码。 ○强大的广告管理功能,网店标志、大小横幅、广告图片、侧边...
  • A 新增 WXML 面板支持自定义组件数据查看与实时修改 A 新增 WXML 面板支持使用键盘 (上下左右) navigate the DOM tree A 新增 WXML 面板支持右键操作 Hide element/Delete element/Scroll Into View/Collapse ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 101
精华内容 40
关键字:

网页消息实时提示