如何使用远程页面的构造函数在我的Greasemonkey UserScript中创建一个Object?

min*_*eek 5 javascript greasemonkey scriptmanager

我的用户脚本将在其上运行的页面具有命名空间,命名空间定义了构造函数.我想使用相同的构造函数创建一个对象,并使用我的用户脚本中的对象的方法.到目前为止,我一直没有成功.这就是我想要做的.

该页面包含以下原生javascript块:

var namespace={ constructor : function(){
   this.sum = function(value1,value2){
   alert(value1+value2);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

被用作:

var pageObject=new namespace.constructor();
pageObject.sum(1,2);
Run Code Online (Sandbox Code Playgroud)

在My Userscript中,我打算像pageObject一样创建一个对象,并使用我自己的参数调用sum.

我尝试过以下操作:

var greaseNameSpace = unsafeWindow.namespace;
var greaseObject = new greaseNameSpace.constructor();
greaseObject.sum(1,2);
Run Code Online (Sandbox Code Playgroud)

没有运气,虽然出现了greaseNameSpace,甚至greaseNameSpace.constructor也是一个有效的函数,使用new greaseNameSpace.constructor()会产生undefined.

也试过以下:

var greaseObject =new unsafeWindow.namespace.constructor();
Run Code Online (Sandbox Code Playgroud)

再次,greaseObject仍未定义.

我在这里找到一个线程如何创建在远程页面中定义的类的对象?

但它使用eval,我想知道这是否正确?

任何和所有的帮助将非常感谢:)谢谢!

小智 0

尝试:

var greaseNameSpace = unsafeWindow.namespace.constructor;
var greaseObject = new greaseNameSpace();
greaseObject.sum(1,2);
Run Code Online (Sandbox Code Playgroud)