如何使用 HTMLUnit 编写事件处理程序并检测某些 JavaScript 调用?
How to write Event Handlers and detect certain JavaScript calls using HTMLUnit?
我想使用Java API, HTMLUnit,来检测Java脚本程序在网页上调用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。
我想使用Java API, HTMLUnit,来检测Java脚本程序在网页上调用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。