首页 > 解决方案 > 我找不到在 HTML 和 Javascript 中声明的变量

问题描述

我正在研究 YouTube 频道的来源。
为方便起见,我简单地重写了该页面的代码。
这是 HTML。

<html>
<head>
<script data-original-src="/miniplayer.js" src="/miniplayer.js"></script>
...
</head>

这是'miniplayer.js'的代码。

(function(g) {
var window = this;
...
})(_yt_player);

我认为“miniplayer.js”是第一个要处理的代码,因为
它位于 head 标签的第一行。 但是我在调​​用脚本时立即执行
的“miniplayer.js”函数中找不到变量“_yt_player” 。

标签: javascripthtml

解决方案


要查找定义全局对象的位置,如果对象具有函数,通常可以console.dir在函数上使用并检查其[[FunctionLocation]]属性。这就是我找到yt_player定义的方式:

在此处输入图像描述

这就是简单的方法。如果这不起作用,另一种识别窗口属性创建位置的方法是使用在页面加载开始时运行的用户脚本,并为该属性分配一个设置。调用 setter 时,抛出错误并检查堆栈跟踪。

// ==UserScript==
// @name         Find _yt_player
// @match        https://www.youtube.com/
// @run-at       document-start
// @grant        none
// ==/UserScript==

Object.defineProperty(window, '_yt_player', {
  set(newVal) {
    throw new Error('_yt_player was just assigned to');
  }
});

在此处输入图像描述

以上两种方法都会带你到base.js.


推荐阅读