原生H5简单代码,包含页面动态展示、数据请求、事件绑定,单面源码教程Html

印迹发布于:2019-5-27 1157

主要H5文件
<!DOCTYPE html>
<html class="pixel-ratio-1">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title>精选观点</title>
        <meta name="description" content="">
        <meta name="author" content="社区">
        <meta name="viewport" content="initial-scale=1, maximum-scale=1">
        <meta name="apple-mobile-web-app-capable" content="yes">
        <meta name="apple-mobile-web-app-status-bar-style" content="black">
        <meta name="format-detection" content="telephone=no">
    </head>
    <style>
        @charset "utf-8"; /* reset.css */
        body {
            overflow-y: visible !important;
            -webkit-touch-callout: none;
            -webkit-user-select: none;
            -moz-user-select: moz-none;
            user-select: none;
        }
 
        body * {
            box-sizing: border-box;
            -moz-box-sizing: border-box;
            /* Firefox */
            -webkit-box-sizing: border-box;
            /* Safari */
        }
 
        /** html4 reset **/
        body, div, ul, ol, li, h3, h4, h5, h6, p {
            margin: 0;
            padding: 0;
        }
 
        img {
            border: 0 none;
        }
 
        em {
            font-style: normal;
        }
 
        ol, ul, li {
            list-style-type: none
        }
 
        /** html5 reset **/
        header, footer, section, article {
            margin: 0;
            padding: 0;
            display: block;
        }
 
        a {
            text-decoration: none;
            -webkit-tap-highlight-color: rgba(0,0,0,0);
        }
 
        a:hover {
            opacity: 1
        }
 
        .clear {
            clear: both;
            font-size: 0;
            height: 0;
            line-height: 0;
            overflow: hidden;
        }
 
        .clearfix:after {
            clear: both;
            content: "";
            display: block;
            font-size: 0;
            height: 0;
            visibility: hidden;
        }
 
        .clearfix {
            zoom:1;}
 
        /** Body, links, basics **/
        body,html {
            width: 100%;
            height: 100%;
            font-size: 100px;
            overflow-x: hidden;
        }
 
        body {
            font-size: 0.14rem;
            line-height: 1.8;
            font-family: "Helvetica Neue", Helvetica, STHeiTi, sans-serif;
            -webkit-font-smoothing: antialiased;
            -moz-osx-font-smoothing: grayscale;
            text-rendering: optimizeLegibility;
            font-family: arial;
            background: #f4f4f4;
        }
 
        /* 布局grid */
        section.main {
            width: 100%;
            height: 100%;
            position: relative;
            z-index: 100;
        }
 
        section.main.fixed {
            -webkit-box-orient: vertical;
            box-orient: vertical;
            -webkit-flex-direction: column;
            flex-direction: column;
        }
 
        section.main.fixed,.ui.layout {
            display: -webkit-box;
            display: -webkit-flex;
            display: flex;
        }
 
        section.main.fixed > article {
            overflow-x: hidden;
            overflow-y: scroll;
            height: 100%;
        }
 
        section.main.fixed > article, .ui.layout > .row-1 {
            -moz-box-flex: 1;
            -webkit-box-flex: 1;
            -webkit-flex: 1;
            flex: 1;
        }
 
        .ui.layout {
            height: inherit!important;
        }
 
        @media (max-device-width: 320px ) {
            html,body {
                font-size:85px;
            }
 
            body {
                font-size: 0.14rem;
            }
        }
 
        @media (min-device-width : 414px) and (max-device-width : 736px) and (-webkit-min-device-pixel-ratio : 3) {
            html {
                font-size: 117.1875px;
            }
        }
 
        /*通用*/
        ::-webkit-scrollbar {
            display: none;
            width: 0;
            height: 0;
            background: rgba(0,0,0,0);
        }
 
        /*精选观点*/
        .jyg-com-view ul {
            background: #ffffff;
        }
 
        .jyg-com-view li {
            border-bottom: 1px solid #e5e5e5;
            padding: 0.16rem 0.15rem 0.21rem;
        }
 
        .jyg-com-view li:last-child {
            border-bottom: none;
        }
 
        .jyg-com-view h4 {
            font-size: 0.16rem;
            color: #222222;
            font-weight: normal;
            line-height: 0.24rem;
        }
 
        .jyg-com-view h4>em {
            display: inline-block;
            width: 0.36rem;
            height: 0.18rem;
            font-size: 0.1rem;
            text-align: center;
            line-height: 0.18rem;
            -webkit-border-radius: 0.02rem;
            border-radius: 0.02rem;
            vertical-align: top;
            margin: 0.03rem 0.1rem 0 0;
        }
 
        .jyg-com-view .jyg-privacy {
            color: #ff9e37;
            border: 1px solid #ff9e37;
        }
 
        .jyg-com-view .jyg-free {
            color: #0a54b0;
            border: 1px solid #0a54b0;
        }
 
        .jyg-com-view p {
            font-size: 0.14rem;
            color: #555555;
            line-height: 0.22rem;
            padding: 0.05rem 0 0;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
            overflow: hidden;
        }
 
        .jyg-com-view .ui.layout {
            height: 0.18rem;
            font-size: 0.12rem;
            color: #666666;
            padding-top: 0.11rem;
        }
 
        .jyg-com-view-info i {
            float: left;
            display: block;
            width: 0.17rem;
            height: 0.17rem;
            -webkit-border-radius: 50%;
            border-radius: 50%;
        }
 
        .jyg-com-view-info img {
            width: 0.17rem;
            height: 0.17rem;
            -webkit-border-radius: 50%;
            border-radius: 50%;
        }
 
        .jyg-com-view-info strong {
            float: left;
            display: block;
            font-weight: normal;
            padding: 0 0.15rem 0 0.07rem;
        }
 
        .jyg-com-view-opera a {
            float: left;
            display: block;
            color: #666666;
            padding: 0.01rem 0 0 0.18rem;
        }
 
        .jyg-com-view-opera .jyg-comment {
            background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD5SURBVEhL7ZU9CsJAEIVXWxsLsbZRPEAKe7G3tFhIk7/SG+QEoneIpTfwBDZiZ7yItW+GISC4hE1Gi+CDR2Yn2e+FLNk1cRwXcAnfFE28wpBQ3LlQVsWlRC6UVXG7FxBF0SxJkq2vaZ4gWM6ANE2nnwB1pnmCYDkDtPQPqJUzAAsWwIcGDgTBcgZkWTbGw2tf0zxBsJwBWupWwHe3ayzQEYNGBw62hxVDROjR4UX3SuJK2xhr7SAMw6GPsbktALrmed4nBoBL+Ez3iMfgtqI3BtSi7KG+oH77F1oLn2gC6APwDa4naesK8D38RMBcWroCeISAnQx/LWNeCpgj14xREzwAAAAASUVORK5CYII=") no-repeat left center;
            background-size: 0.12rem 0.12rem;
            margin-right: 0.3rem;
        }
 
        .jyg-com-view-opera .jyg-praise {
            background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGxSURBVEhLvZQ/SwNBEMUjKNoI/kFs1EqwtRELEbT0E4iNZ5K73B0xQURBbBK0NEUqwULQVhEU7WwEP4ABEWOQkPhJ/M3eXKJgk9zFB4+dN7Mzb2+zJNEJHMdZgK+wCb9s23a0FA8Y+gYXJU6n02PE76yzphgVnufNZTKZJ5UGGBShqzIaXNddYdilSgO5IjFRGQ1iwBdcqDTAYCtOg02GlVQaoPOY7quMBoY9wDWVBugjaKnsDpxwgCEl1jtkX5ANQP6MfJl1m3WH1edLlyj92vcneH6TNHk0VeFpLpcb1FIL5C1YZN+uGMADeE/uOZvNjptNJA7hC8lKSHRd42N5nmZjB6AvD4MXx7BGMpmcsCxrRMjLWKZ4a4pdgplyrU0jCComUGAwH9VAIAc3QS8MCoVCv1yzEb0woH8VXoeiFwZnPNeNUMRqkEqlhuX+eTBDJhG3Ab3y93GiMl4D+XHprTFjSlPxGtBnc/pzlQHiMpA7p+8TgxlNBYjLgJ49hpdVtkHyQ0ODbgyYsU5P1ff9UU21QfFKTORLhBq3DIhvyDVComus9Z85+MjwaW35TyQS322m+jFP7EpvAAAAAElFTkSuQmCC") no-repeat left center;
            background-size: 0.12rem 0.12rem;
        }
 
        .jyg-com-view-opera .jyg-praise.active {
            background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFVSURBVEhLYyAFGKfNZHWOXHXfKXLlH+eIlY1QYeoB+/j1AkAL/kPwyn9O0Su1oFLUAc6x64QRFqz67xSxqgkqRR3gEr7aGdkC54hV66FS1AFAQ6cgWwD0wQGoFOXAPnqtDNDF31EtWLkWKk0ZCA1dxQY07DCy4WAcsaoGqoR8ADIcaNAmDMOBqcgtco0GVBl5wD58uQIwnI9jGg7ExEYw0OuBQEMK4DhyVTo4SCJXlgNd+Rmr4UAMlP8J1LsBiLuA6hrQMVC+2j5mpQooZWAaELHSG6s4iRjo2EfYLYha7YNVnAxMWwsiVt6mqQXAIFpAWwuiViXQ1AJQMqedBRErH4DzAVZJKlgADn9aWgDE0TSzAFylAisnmlkAKhzBhoMAVgWU+iBipSvUeOpbAAye7VCjIQAoeAdV0crPjmEr9NFrL4I4YtUvoMs320cuFYEaDQQMDAAywGKgv81ckgAAAABJRU5ErkJggg==") no-repeat left center;
            background-size: 0.12rem 0.12rem;
        }
    </style>
    <body>
        <div class="page page-current" data-script="" id="" data-pageTitle="" data-refresh="true">
            <section class="main fixed" data-page="home" style="position: fixed">
                <article class="content">
                    <!-- 热门观点 -->
                    <div id="jyg-com-wrap" class="jyg-com-view jyg_view">
                        <ul id="jyg_view"></ul>
                    </div>
                </article>
            </section>
        </div>
    </body>
    <script>
        /**
         * 加载完成后初始化页面
         */
        window.onload = function() {
 
            init();
            //初始化页面
 
            //百分点埋点初始化
            window["_BFD"] = window["_BFD"] || {};
            _BFD.script = document.createElement("script");
            _BFD.script.type = "text/javascript";
            _BFD.script.async = true;
            _BFD.script.charset = "utf-8";
            _BFD.script.src = "http://10.84.140.75:8080/jsapi/zsfuzun-h5.js";
            //(测试内网)js代码路径,由百分点的部署人员提供
            //_BFD.script.src=('https://bic.ebscn.com:9091/jsapi/zsfuzun-h5.js');  //生产外网
            // js代码路径,由百分点的部署人员提供
            document.getElementsByTagName("head")[0].appendChild(_BFD.script);
 
            //百分点埋点
            try {
                onEvent('MAction', {
                    'action_name': 'start',
                    'type': 'page',
                    'name': '精选观点'
                });
            } catch (e) {}
        }
 
        var sq_url = "http://10.84.137.42:18002/servlet/json";
        var sq_domain = "http://10.84.137.42:18002";
        var platfrom = "";
        //平台信息,1:安卓,2:ios
        var user_id = "";
        var platfrom = "";
        //平台信息,1:安卓,2:ios
        /**
         *初始化方法 
         * */
        function init() {
            platfrom = platfromCheck();
            //获取平台信息
            user_id = queryUrlParam("user_id");
            viewList();
        }
 
        /*
         * 页面事件绑定
         */
        function bindPageEvent() {
 
            //跳转详情页
            var pointView_li = document.getElementsByTagName("li");
            for (var i = 0; i < pointView_li.length; i++) {
                pointView_li[i].onclick = function() {
                    var view_id = this.getAttribute("data-viewId");
                    url = sq_domain + "/m/gdytg/views/point/detail.html?view_id=" + view_id;
                    if (platfrom == "1") {
                        selecedexternal.selectedNewsDetail(url);
                    } else if (platfrom == "2") {
                        selectedNewsDetail(url);
                    }
 
                    //百分点埋点
                    try {
                        onEvent('MEvent', {
                            'id': 'home_selected_views_click',
                            'params': {
                                "iid": view_id,
                                "name": this.getElementsByTagName("span")[0].innerHTML
                            }
                        });
                    } catch (e) {}
                }
            }
        }
 
        function viewList() {
            var viewListCallback = function(data) {
                if (data.error_no == "0") {
                    if (data.results[0].data.length > 0) {
                        var data = data.results[0].data;
                        var strHTML = "";
                        var imgUrl = "";
                        var recommendShow = "";
                        for (var i = 0; i < data.length; i++) {
                            strHTML += "<li data-viewId='" + data[i].view_id + "'>";
                            if (data[i].is_recommend == 0) {
                                recommendShow = "最新";
                            } else {
                                recommendShow = "推荐";
                            }
                            strHTML += "<h4><em class='jyg-free'>" + recommendShow + "</em><span>" + data[i].title + "</span></h4>";
                            strHTML += "<p>" + formatContent(data[i].content) + "</p>";
                            strHTML += "<div class='ui layout'>";
                            strHTML += "<div class='row-1 jyg-com-view-info'>";
                            if (data[i].face_image_small.indexOf("http") == "0") {
                                //图片地址以http开头
                                imgUrl = data[i].face_image_small;
                            } else {
                                imgUrl = sq_domain + data[i].face_image_small;
                            }
                            strHTML += "<i><img src='" + imgUrl + "' /></i>";
                            strHTML += "<strong>" + data[i].user_name + "</strong>";
                            strHTML += "<span>" + data[i].create_time + "</span>";
                            strHTML += "</div>";
                            strHTML += "<div class='jyg-com-view-opera'>";
                            strHTML += "<a href='#' class='jyg-comment'>" + data[i].comment_num + "</a>";
                            if (data[i].is_zan == "yes") {
                                strHTML += "<a href='#' class='jyg-praise active'>" + data[i].praise_num + "</a>";
                            } else {
                                strHTML += "<a href='#' class='jyg-praise'>" + data[i].praise_num + "</a>";
                            }
                            strHTML += "</div>";
                            strHTML += "</div>";
                            strHTML += "</li>";
                        }
                        document.getElementById("jyg_view").innerHTML = strHTML;
 
                        var param = {
                            "height": document.getElementById("jyg-com-wrap").clientHeight,
                            "flag": "3"
                        };
                        // alert("homeNewsHeight");
                        if (platfrom == "1") {
                            //安卓
                            selecedexternal.homeNewsHeight(JSON.stringify(param));
                        } else if (platfrom == "2") {
                            //ios
                            homeNewsHeight(param);
                        }
 
                        bindPageEvent();
                        //绑定事件
 
                    }
                } else {
                    alert(data.error_info);
                }
            }
            var param = {
                "funcNo": 1106403,
                "cur_page": 1,
                "num_per_page": 2,
                //"user_id" : user_id
            };
            if (platfrom == "2") {
                window.setTimeout(function() {
                    ajaxPost(sq_url, param, viewListCallback)
                }, 100);
                //延迟执行800毫秒
            } else if (platfrom == "1") {
                ajaxPost(sq_url, param, viewListCallback);
            }
            //ajaxPost(sq_url, param, viewListCallback);
        }
 
        //创建ajax请求
        function ajaxPost(url, param, callback) {
            var xmlHttp;
            /*
             * 创建XMLHttpRequest实例
             */
 
            try {
                // Firefox, Opera 8.0+, Safari
                xmlHttp = new XMLHttpRequest();
            } catch (e) {
                try {
                    // Internet Explorer
                    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    try {
                        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                    } catch (e) {}
                }
            }
 
            /*
             * 2    服务器向浏览器响应请求             
             */
            xmlHttp.onreadystatechange = function() {
                //alert(xmlHttp.readyState);
                //alert(xmlHttp.status);
                if (xmlHttp.readyState == 4) {
                    if (xmlHttp.status == 200 || xmlHttp.status == 304) {
                        var data = xmlHttp.responseText;
                        //alert(data);
                        callback(JSON.parse(data));
                    }
                }
            }
 
            /*
             * 3    浏览器与服务器建立连接
             */
            xmlHttp.open("POST", url, true);
 
            //如果是POST请求方式,设置请求首部信息
            xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
 
            /*
             * 4    浏览器向服务器发送请求
             */
            param = (function(value) {
                var oStr = "";
                for (var key in value) {
                    oStr += key + "=" + value[key] + "&";
                }
                ;return oStr;
            }(param));
            xmlHttp.send(param);
            //xmlHttp.send(null);
 
        }
 
        /**
        * 判断手机平台号
        */
        function platfromCheck() {
            var u = navigator.userAgent;
            var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
            //android终端
            var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
            //ios终端
            if (isAndroid) {
                return "1";
            } else if (isiOS) {
                return "2";
            }
        }
 
        //将&lt;与&gt;转换为括号
        function formatContent(content) {
            if (content) {
                var contentresult = content.replaceAll("&amp;", "&").replaceAll("&lt;", "<").replaceAll("&gt;", ">");
                var dd = contentresult.replace(/<\/?.+?>/g, "");
                var dds = dd.replace(/ /g, "");
                //dds为得到后的内容
                return dds;
                //               var contentresult = content.replaceAll("&amp;","&").replaceAll("&lt;","<").replaceAll("&gt;",">");
                //                return contentresult;
            } else {
                return content;
            }
        }
 
        String.prototype.replaceAll = function(AFindText, ARepText) {
            raRegExp = new RegExp(AFindText,"g");
            return this.replace(raRegExp, ARepText);
        }
 
        /**
        * 获取URL参数
        */
        function queryUrlParam(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            if (r != null)
                return unescape(r[2]);
            return null;
        }
    </script>
</html>
另外一个js文件,埋点的js处理代码
//新版H5监听
function onEvent(tag, params) {
    try {
        window.BFDMethod.onBFDEvent(tag, JSON.stringify({
            params: params
        }));
    } catch (e) {
        try {
            if (IOSBFDEvent && typeof (IOSBFDEvent) == 'function') {
                if (tag == "MAction") {
                    var params = JSON.stringify(params);
                } else {
                    var params = JSON.stringify({
                        params: params
                    });
                }
                IOSBFDEvent(tag, params);
            }
        } catch (e) {
            try {
                prompt(tag, JSON.stringify({
                    params: params
                }));
            } catch (e) {
            }
        }
    }
}
//百分点H5调用原生推荐js代码
function bfd_recommend(bid, params, callback) {
    var rec_params = {};
    rec_params.rec_callback = callback;
    rec_params.bid = bid;
    rec_params.params = params;
    try {
        window.BFDMethod.onBFDEvent("bfd_rec", JSON.stringify(rec_params));
    } catch (e) {
        try {
            IOSBFDEvent("bfd_rec", JSON.stringify(rec_params));
        } catch (e) {
            try {
                prompt("bfd_rec", JSON.stringify(rec_params));
            } catch (e) {
            }
        }
    }
}



http://www.virplus.com/thread-306.htm
转载请注明:2019-5-27 于 VirPlus 发表

推荐阅读
最新回复 (0)

    ( 登录 ) 后,可以发表评论!

    返回