【发布时间】:2014-09-10 03:36:15
【问题描述】:
我打算写一个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”时,它会加载特定页面(输入参数) ,调用这个页面是“测试页面”,等待特定的超时时间(输入参数),然后停止脚本
例如:在 Safari 中,存在一个对象名称:“Obj”,其属性和方法如下: 特性: P1 P2 方法: M1() M2()
“libgen.js”将在Safari中运行(将“libgen.js”放到一个html页面,然后用Safari打开这个页面)然后收集对象“Obj”,然后生成新脚本“libsim.js”(输出到控制台或文本区域,然后相互保存到文件“libsim.js”) 运行时:phantomjs libsim.js 如果“testpage.html”调用 Obj.M1(),“libsim.js”会捕捉到它,然后注销到包含以下信息的文件: 属性或方法的名称 时间戳 然后它返回原始值 有关详细示例,您可以查看:https://github.com/ariya/phantomjs/blob/master/examples/detectsniff.js 在原始示例中,它注销到控制台,在此作业中,它将注销到一个文件,名为:“trace.txt”
我想监控网站如何与不同浏览器中的内部 javascript 交互
我的问题是:你认为这份工作有可能吗,你有什么其他的解决方案可以建议我吗,非常感谢
【问题讨论】:
-
它可以模拟一些东西,但也会错过很多东西。闭包和模块,xbrowser 方法怪癖,在每个上使用相同主机的限制等。
-
您必须实现所有可用于 javascript 的对象的所有行为/方法/属性,并以某种方式复制每个浏览器中不同的行为部分。这对我来说根本不实用。如果您告诉我们您要解决的真正问题是什么,我们可能会提供其他更实用的想法来解决这个问题。
标签: javascript jquery phantomjs