如何使用HTMLUnit编写事件处理程序并检测特定的JavaScript调用?

7
我想使用Java API HTMLUnit 来检测JavaScript程序在网页上调用eval()函数的次数。但是,HTMLUnit没有针对这种类型的JavaScript函数的内置处理程序。如何实现此功能?
谢谢。
1个回答

3

有一个想法。也许您可以将带有此代码的脚本注入到您正在加载的HTML的开头:

(function(){
    const oldEval = window.eval;
    window.eval = function () {

        // communicate here with your Java program that eval has been
        // called. Maybe you can use the postMessage method?

        return oldEval.apply(this, arguments);
    };
})();

这样做,您可以劫持eval函数,并且每次调用eval时都可以执行一些代码。如果您想出一个好的方法与您的程序进行通信,那么也许这个方法是可行的。

不确定是否存在问题,但Javascript在运行时有多种评估代码的方式,而不仅仅是eval。因此,这是劫持对eval的直接调用,但不考虑其他评估可能性,例如使用Function构造函数或setTimeout。


等一下,我怎么能够仅凭网站链接将代码注入到脚本中呢? - ilikeyoyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接