我正在使用一个非常非常古老的网站,该网站使用 JSC3D 在画布上显示 3D 模型(是的,就是那么古老),如果可能的话,我想在运行时访问场景...我知道用户脚本(特别是使用 greymonkey)可以在运行时运行之前访问和修改脚本...所以如果可能的话,我可能不得不使用它...但是我没有使用用户脚本的经验,也不知道如何制作“突变观察者”或任何类似的东西
脚本本身的结构如下:
var App = App || {};
App = function (D) {
var a = new JSC3D.Viewer(D); // Variable I need to see during / after runtime
// a.scene -> target I need to access
...
我在运行时能看到的只是“App”实例,但我似乎无法抓取场景或整个 JSC3D 实例。
我的目标是访问 a.scene,以便导出旧模型。开发人员已经提供了从场景下载 STL 的代码,但在这个特定情况下,无法从我正在访问的 webview 访问场景变量。
不,遗憾的是模型数据在网络调用/资源中不可见。他们使用二进制编码器/解码器将所有信息存储到一个文件中,所以我被迫使用运行时方法来尝试获取模型。
好吧,事实证明是我考虑太多了,解决办法其实很简单。
我所要做的就是拦截运行时定期/经常进行的调用之一(在本例中为)
scene.getChild(x)
,并为场景设置一个全局变量。然后我只需在下载器中调用该场景,它就可以完美运行。