从Kick Ass 而来的一点想法

1 阅读3分钟

前面

今天翻文章的时候看到了 第三式:芙蓉面,杨柳腰,无物比妖娆——让你看清UI的轮廓,便跃跃欲试操作了一下,打开控制台,找到style,添加outline,成功!

但是有点太笨了,应该怎么样才能优雅一点?我想起了在书签栏吃灰的Kick Ass,能不能像他这样,在书签栏收藏后点击一下,就可以自动让我看清UI的轮廓

先看看Kick Ass怎么实现的

我已经忘记Kick Ass是什么时间且如何跑到书签栏上面的了,不然的话应该不会这么曲折

看到了一个同学分享的自己实现的小飞机

<!DOCTYPE html>  
<html lang="en">  
  <head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>又见苍岚-飞机 Demo</title>  
  </head>  
  <body>  
    <p><span> 玩法说明: </span></p>  
    <p><span> 1. 方向键控制飞机 </span></p>  
    <p><span> 2. 空格发射子弹 </span></p>  
    <p><span> 3. B 键查看目标 </span></p>  
    <p><span> 4. ESC 退出 </span></p>    
    <button id="myButton">召唤飞机</button>
    
    <script>
      // 为按钮添加事件处理器  
      document.getElementById('myButton').onclick = function() {  
        console.log('Attack!');  
        // 定义要执行的JavaScript代码  
        var KICKASSVERSION='2.0';  
        var s = document.createElement('script');  
        s.type='text/javascript';  
        document.body.appendChild(s);  
        s.src=
          'https://uipv4.zywvvd.com:33030/HexoFiles/js/games/airplane/airplane.js';
        void(0);  
      };  
    </script>
  </body>  
</html>

注入一段js代码,方式是创建一个script标签,引入写好的飞机射击程序,

同理

要实现标记代码轮廓那就创建style标签,写上outline样式就可以了

动手(包含试错部分)

先是把代码改了改,改成这样

<!DOCTYPE html>  
<html lang="en">  
  <head>  
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>又见苍岚-飞机 Demo</title>  
  </head>  
  <body>  
    <p><span> 玩法说明: </span></p>  
    <p><span> 1. 方向键控制飞机 </span></p>  
    <p><span> 2. 空格发射子弹 </span></p>  
    <p><span> 3. B 键查看目标 </span></p>  
    <p><span> 4. ESC 退出 </span></p>    
    <button id="myButton">召唤飞机</button>
    
    <script>
      // 为按钮添加事件处理器  
      document.getElementById('myButton').onclick = function() {  
        console.log('Attack!');  
        // 定义要执行的JavaScript代码  
        var KICKASSVERSION='2.0';  
        var s = document.createElement('style');  
        s.textContent = `html * {outline: 1px solid red;}`
        document.head.appendChild(s);
        void(0);
      };  
    </script>
  </body>  
</html>

可以实现点击按钮后出现outline

怎么收藏后,点击直接跳转到我这个页面了,我的一点直接把当前网页全部加上outline去哪了

原来走错路了人家本来就是在自己写的页面上出现的飞机,改造后的也仅仅是用js修改页面样式,那该怎么才好,还得回到开始的地方,看看Kick Ass怎么回事
需要用到了一个叫Bookmarklet的小知识点

Bookmarklet 是一个伪装的"网址",实际上是一段 JavaScript 代码。

一句话解释

把 javascript: 开头的代码存到书签里,点击时浏览器会执行这段代码。

为什么叫 Bookmarklet
单词含义
Bookmark书签
-let小东西(类似 applet、leaflet)

合起来就是「小书签」,但功能远超普通书签。

核心原理

普通书签:

https://google.com          ← 打开网页

Bookmarklet:

javascript:alert('Hello')   ← 执行代码

点击时,浏览器把 javascript: 后面的内容当成 JS 执行,而不是跳转页面。就是零安装、即点即用

你要这么说我就懂了

方法一:手动创建书签(推荐)

第一步:  在浏览器书签栏空白处右键 → 点「添加书签/网页

第二步:  在弹出框里填写:

  • 名称:随便填,比如 注入样式
  • 网址/URL:把下面这段代码整个粘贴进去
javascript:(function(){if(document.getElementById('my-injected-style'))return;var style=document.createElement('style');style.id='my-injected-style';style.textContent='html * { outline: 1px solid red }';document.head.appendChild(style);})();

第三步:  点保存 ✅

方法二:拖拽法(需要页面上有链接)

如果网页上有一个 <a> 标签,href 是 javascript:...,可以直接拖到书签栏

可以在本地建一个 HTML 文件测试:

<!DOCTYPE html>
<html>
<body>
  <p>把下面这个链接拖到书签栏 👇</p>
  
  <a href="javascript:(function(){if(document.getElementById('my-injected-style'))return;var style=document.createElement('style');style.id='my-injected-style';style.textContent='html * { outline: 1px solid red }';document.head.appendChild(style);})();">
    🎨 注入样式
  </a>
</body>
</html>

实现

image.png