我想使用Java API HTMLUnit 来检测JavaScript程序在网页上调用eval()函数的次数。但是,HTMLUnit没有针对这种类型的JavaScript函数的内置处理程序。如何实现此功能?
谢谢。
谢谢。
有一个想法。也许您可以将带有此代码的脚本注入到您正在加载的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。