2012-03-29 122 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。