JS自我调用函数内的变量访问[重复]

问题描述 投票:0回答:2

我正在尝试编写一个书签,以增强我经常使用的网站的功能。该网站的所有代码都在一个脚本中包含在一个自调用功能中,如下所示:

(function() {

  var exampleVar=1;

  // code

}).call(this);

我无法控制该网站。如何从控制台或书签中获取exampleVar的值?

javascript function bookmarklet self-invoking-function
2个回答
0
投票

您不能,这是范围界定的目的之一,是为了保护访问的变量形式。


0
投票

如果位于嵌入式<script>标记中,则可以访问该脚本的textContent

// YOUR CODE
const scriptTag = document.querySelector('div + script');
const match = scriptTag.textContent.match(/\bexampleVar=(\d+)/);
console.log(match[1]);
<div></div>
<script>
// WEBSITE's CODE
(function() {

  var exampleVar=1;

  // code

}).call(this);
</script>

您将必须找出一种唯一标识所需<script>标签的方法。上面的示例使用CSS选择器div + script访问紧随<script>之后的第一个<div>。为您所在的网站找出类似的CSS选择器。

© www.soinside.com 2019 - 2024. All rights reserved.