监控网站如何与不同浏览器中的内部JavaScript进行交互

时间:2014-09-10 03:36:15

标签: javascript jquery phantomjs

我打算用浏览器编写一个javascript库:

在所有浏览器中(包括Safari,Firefox,Chrome,IE,...在桌面和移动环境中),包含一些标准的javascript对象:Window,Navigator,Screen,History,Location,Document,Events,...具有许多属性(或属性)和浏览器之间不同的方法。我的工作是:

创建1个javascript文件,在特定浏览器中运行,从Safari开始,命名为此脚本:“libgen.js”。此脚本使用所有属性(或属性)和方法收集浏览器中的所有javascript对象(排除HTML标记,甚至HTML5标记),然后生成可在phantomjs环境中运行的javascript,命名为新脚本:“libsim.js”。

在“libsim.js”中,它将模拟以前收集的所有javascript对象的所有属性(或属性)和方法,然后在phantomjs中运行“libsim.js”时,它将加载一个特定的页面(输入参数) ,调用此页面为“测试页面”,等待特定超时(输入参数),然后停止脚本

Ex:在Safari中,存在一个对象名称:“Obj”,其属性和方法如下: 属性: P1 P2 方法: M1() M2()

“libgen.js”将在Safari中运行(将“libgen.js”放到html页面,然后通过Safari打开此页面)然后收集对象“Obj”,然后生成新脚本“libsim.js”(输出控制台或textarea,然后通过文件保存到文件“libsim.js”) 运行时:phantomjs libsim.js< 120> 如果“testpage.html”调用Obj.M1(),“libsim.js”将捕获该信息,然后注销到文件包含以下信息: 财产或方法的名称 时间戳 然后它返回原始值 有关详细示例,您可以查看:https://github.com/ariya/phantomjs/blob/master/examples/detectsniff.js 在原始示例中,它注销到控制台,在此作业中,它将注销到名为“trace.txt”的文件

我想监控网站在不同浏览器中与内部javascript的互动方式

我的问题是:你认为这项工作是否可行,你有其他任何建议我的解决方案吗,非常感谢你

1 个答案:

答案 0 :(得分:0)

  

[生成的脚本]" libsim.js" [...]将模拟在

之前收集的所有javascript对象的所有方法      

您认为这项工作是否可行?

不,绝对不是。您尝试模拟的那些方法是 internal

  • 你不知道他们做了什么(如你所说,所有跨浏览器的怪癖,以及你不想在js中实现自己的浏览器)
  • 你不知道他们的代码(因为某些原因,他们被称为 native :他们甚至可能根本不用JS编写)
  • 你不能简单地测试所有可能的输入 - 你甚至无法确定它们的输出,这可能是某种内部状态。

你不能"返回原始值"。