美文网首页
前端冷知识

前端冷知识

作者: amnsss | 来源:发表于2015-10-05 22:52 被阅读42次

    浏览器地址栏运行JavaScript代码

    在地址栏输入以javascript:开头后跟要执行的语句

    javascript:alert('hello world')
    

    在地址栏输入,回车后alert()正常执行。需要注意的是copy paste时IE及Chrome会自动去掉前缀javascript:,所以要手动加上才能执行。Firefox中不支持在地址栏运行JS代码

    应用:《让Chrome 接管邮件连接,收发邮件更方便了》中有使用到,利用在浏览器地址栏中执行JavaScript代码将Gmail设置为系统的邮件接管程序。

    浏览器地址栏运行HTML代码

    在非IE内核的浏览器中,地址栏可以直接运行HTML代码

    data:text/html,<h1>Hello, world!</h1>
    

    利用a标签自动解析URL

    有时候我们想要获取URL中的host,query,会用正则表达式去抓取。如果把url赋给DOM-a就一切OK!

    来自james代码

    function parseURL(url) {
        var a =  document.createElement('a');
        a.href = url;
        return {
            source: url,
            protocol: a.protocol.replace(':',''),
            host: a.hostname,
            port: a.port,
            query: a.search,
            params: (function(){
                var ret = {},
                    seg = a.search.replace(/^?/,'').split('&'),
                    len = seg.length, i = 0, s;
                for (;i<len;i++) {
                    if (!seg[i]) { continue; }
                    s = seg[i].split('=');
                    ret[s[0]] = s[1];
                }
                return ret;
            })(),
            file: (a.pathname.match(//([ ^/?#]+)$/i) || [,''])[1],
            hash: a.hash.replace('#',''),
            path: a.pathname.replace(/^([ ^/])/,'/$1'),
            relative: (a.href.match(/tps?://[ ^/]+(.+)/) || [,''])[1],
            segments: a.pathname.replace(/^//,'').split('/')
        };
    }
    // usage
    var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top');
     
    myURL.file;     // = 'index.html'
    myURL.hash;     // = 'top'
    myURL.host;     // = 'abc.com'
    myURL.query;    // = '?id=255&m=hello'
    myURL.params;   // = Object = { id: 255, m: hello }
    myURL.path;     // = '/dir/index.html'
    myURL.segments; // = Array = ['dir', 'index.html']
    myURL.port;     // = '8080'
    myURL.protocol; // = 'http'
    myURL.source;   // = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'
    

    页面拥有ID的元素会创建全局变量

    <div id="hello"></div>
    <script> console.log(hello) </script>
    

    实时编辑CSS

    通过设置style标签的 display:block 样式可以让页面的style标签显示出来,并且加上 contentEditable 属性后可以让样式成为可编辑状态,更改后的样式效果也是实时更新呈现的。此技巧在IE下无效。爽爆啊!

    <body>
        <style type="text/css" style="display: block" contentEditable>
        body{                                                   
            background: pink;
        }
        </style>
        <p class="content">在上面可以实时编辑我的样式</p>
    </body>
    

    相关文章

      网友评论

          本文标题:前端冷知识

          本文链接:https://www.haomeiwen.com/subject/kcigcttx.html