javascript 篡改猴子中的SweetAlert

ix0qys7i  于 2023-01-01  发布在  Java
关注(0)|答案(2)|浏览(325)

我试图在tampermonkey中安装和使用sweetalert 2,但它说Swal在控制台中未定义。
我尝试使用@require和/* globals Swal */,但没有成功。enter image description here

// ==UserScript==
// @name         Quizlet Explanations Get Answer
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://quizlet.com/explanations/questions/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=quizlet.com
// @require      https://cdn.jsdelivr.net/npm/sweetalert2@11.6.16/dist/sweetalert2.all.min.js
// @grant        none
// ==/UserScript==

/* global Swal */

window.onload = function() {
    Swal.fire(
        'Good job!',
        'You clicked the button!',
        'success'
    );
}
20jt8wwn

20jt8wwn1#

请注意GitHub上库源代码中的以下代码行:

if (typeof this !== 'undefined' && this.Sweetalert2) {
    this.swal = this.sweetAlert = this.Swal = this.SweetAlert = this.Sweetalert2
}

有两种解决方案:
1.* * 使用Sweetalert2,它在任何情况下都由JavaScript文件公开。
1.* * 通过将// @unwrap添加到标头来启用沙箱模式
。当加载程序将脚本注入到页中时,脚本将驻留在沙箱中,如果@grantnone,则沙箱将被禁用。使用// @unwrap,您可以实现所需的this行为,并使用任何公开的swalsweetAlertSwalSweetAlert个名称。

r1zk6ea1

r1zk6ea12#

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>sweetalert2 example</title>
</head>

<body>

  <script>
    window.onload = function() {
      Swal.fire({
        title: 'Good job!',
        text: 'You clicked the button!',
        type: 'success',
      });
    }
  </script>
  <script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
</body>

</html>

将其链接到此URL,而不是https://cdn.jsdelivr.net/npm/sweetalert2@11
因此该行将如下所示:

// @require      https://cdn.jsdelivr.net/npm/sweetalert2@11

那么你的脚本应该是这样的:

/* global Swal */

window.onload = function() {
                Swal.fire({
                title: 'Good job!',
                text: 'You clicked the button!',
                type: 'success',
            });
}

希望这能有所帮助!

相关问题