2012-03-29 80 views
1

我想提取javasscript代码并找出是否有任何动态标签创建像document.createElement('script');我试图用正则表达式来做到这一点,但使用正则表达式限制我只得到一些格式,所以我认为编写一个JavaScript解析器,它从JavaScript代码中提取所有关键字,字符串和函数。为javascript代码编写解析器

+0

那么写作它到底是什么问题呢? – 2012-03-29 11:56:44

+0

你怎么知道它不会调用创建元素的函数?例如,jQuery也可以向DOM添加新元素,而您的方法现在不会检测到该元素。 – 2012-03-29 11:57:54

+0

我不知道如何启动它 – user1275375 2012-03-29 11:58:01

回答

0

也许你应该尝试使用Burrito

2

一般来说是没有办法知道的代码将永远运行一个给定的线,你将需要解决halting problem。 如果您将分析限制为仅查找函数调用的出现次数,则不会取得很大进展。天真的方法仍然很容易被欺骗,如果你只是匹配document.createElement的正则表达式,那么你将无法匹配像document["create" + "Element"]那样简单的事情。一般来说,你不仅需要解析代码,而且要评估它,以解决这个问题。并确保您可以评估代码,您将再次需要解决暂停问题。

0

那么第一条规则是从来没有使用正则表达式来处理这样的大事情,或者DOM,或者......。你必须用令牌解析它。好消息是你不必自己写。有几个JS JS解析器。

他们可能是有点难以与它的工作。但最好与他们合作。还有其他项目使用这些如burritocode surgeon。所以你可以看看源代码,看看它们是如何使用它们的。

但也有坏消息,哪些人仍然可以胜过其他人,更不用说他们编写的解析器和代码了。至少你需要用一些执行时间变量来评估代码,看看它是否尝试访问DOM。