簡體   English   中英

使用Greasemonkey訪問Javascript私有變量

[英]Accessing Javascript private variables with Greasemonkey

function Foo1() {
    var bar = 'test';
}

AFAIK,除了編寫特權函數之外,不可能從全局范圍訪問變量條,例如

function Foo2() {
    var bar = 'test';
    this.read = function(){return bar;};
}

Greasemonkey(或任何其他工具)是否提供了訪問變量條的任何方法,而不是用Foo2重新定義整個函數Foo1? Greasemonkey有GM_xmlhttprequest,它可以避免某些限制,所以我想知道它是否也可以做到這一點並為我節省一些問題。

我目前要做的是讀取和編寫嵌入在函數中的私有變量,該函數本身也位於單獨的.js包含中。 因此,我不能直接修改腳本,我必須用AJAX加載.js,進行修改,然后覆蓋原始腳本。 這非常麻煩,我想要一個更簡單的方法來完成這項任務。

GM_xmlhttprequest只是繞過瀏覽器安全性。 另一方面,可變范圍是語言和Javascript VM的一部分。 如果沒有修改Javascript VM,就無法訪​​問函數范圍之外的那些“私有”變量。

如果Foo1不是本機函數並且您確實知道函數的模式,那么您可以使用以下方法獲取變量的內容:

var bar = /bar = '(\w+)'/.test(Foo1.toString()) && RegExp.$1;
alert(bar); // will return "test"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM