Greasy Fork is available in English.

AirlineRuleExport

机票航司客规静态页面生成

// ==UserScript==
// @name         AirlineRuleExport
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  机票航司客规静态页面生成
// @author       Ivanzhang
// @require https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js
// @match        http://conf.ctripcorp.com/pages/viewpage.action?pageId=*
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    $(document.body).append("<div id='toolbarRule'><div class='toolbarButton' id='toolbarPreview'>预览</div><div class='toolbarButton' id='toolbarSave'>保存</div><div class='toolbarButton' id='toolbarPublish'>发布</div></div>");

    $('#toolbarRule').css({"position":"absolute", "bottom": "100px", "right": "50px", "border-radius": "10px", "background-color": "#fff", "box-shadow": "0 3px 6px rgba(0,0,0,.2)", "overflow": "hidden"});

    $('.toolbarButton').css({"display": "flex", "justify-content": "center", "align-items": "center", "width": "50px", "height": "50px", "cursor": "pointer"});

    var title = document.getElementById('title-text').children[0].innerHTML;
    var content = document.getElementById('main-content').innerHTML;

    var compile = function (functionObject) {
        return functionObject.toString().match(/\/\*([\s\S]*?)\*\//)[1];
    };

    var template = compile(function () {/*
<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <meta charset="utf-8">
    <meta name="viewport"
        content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=N, minimal-ui">
    <meta content="telephone=no" name="format-detection">
    <title></title>
    <style type="text/css">
        body {
            height: 100%;
            padding: 0;
            margin: 0;
            background-color: #FFFFFF;
            -webkit-backface-visibility: hidden;
            font-family: -apple-system, Helvetica, Arial, Tahoma, "PingFang SC", "Hiragino Sans GB", "Lantinghei SC", "Microsoft YaHei", sans-serif;
        }

        p,
        li {
            margin: 15px 0;
        }

        ol {}

        a {
            color: #333;
            position: relative;
            z-index: 2;
        }

        em {
            font-style: normal;
            font-weight: normal;
        }

        .mask {
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            z-index: 1;
        }

        .container {
            position: relative;
            font-size: 14px;
            line-height: 1.5;
            padding: 15px;
            color: #333;
            margin: 0 auto;
            max-width: 750px;
        }

        .header {
            font-size: 20px;
            text-align: center;
        }

        h4 {
            padding-top: 15px;
            font-size: 16px;
            text-align: center;
        }
    </style>
</head>

<body>
    <article class="mask"></article>
    <div class="container">


    </div>
</body>

</html>
 */
    });

    var templace_replace_title = template.replace(/\<title>[\s\S]*?\<\/title>/, '<title>' + title + '</title>');
    var templace_replace_content = templace_replace_title.replace(/\<div class="container">[\s\S]*?\<\/div>/, '<div class="container">' + content + '</div>');
    console.log(templace_replace_content)


    function fake_click(obj) {
        var ev = document.createEvent("MouseEvents");
        ev.initMouseEvent(
            "click", true, false, window, 0, 0, 0, 0, 0
            , false, false, false, false, 0, null
        );
        obj.dispatchEvent(ev);
    }

    function export_raw(name, data) {
        var urlObject = window.URL || window.webkitURL || window;

        var export_blob = new Blob([data]);

        var save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a")
        save_link.href = urlObject.createObjectURL(export_blob);
        save_link.download = name;
        fake_click(save_link);
    }


    function preview() {
        var open = window.open("about:blank", "_blank");
        open.document.write(templace_replace_content);
    }

    function save() {
        export_raw('rule.html', templace_replace_content);
    }

    $('#toolbarPreview').click(function(){
        preview()
    })

    $('#toolbarSave').click(function(){
        save()
    })

    $('#toolbarPublish').click(function(){
         window.open("http://eros.ares.ctripcorp.com/#/files/pages.ctrip.com/flight/h5/hybrid/booking/content", "_blank");
    })

})();