2014-01-23 66 views
0

這是一個跟進到this question.如何捕捉用戶用JavaScript點擊的* ANY *元素?

這個想法是讓用戶通過JavaScript在Firefox瀏覽器中單擊的位置。 從命名的問題開始,以下的JavaScript代碼幾乎做的:

var DocElements = document.getElementsByTagName('*');for(var i = 0; i < DocElements.length; i++){DocElements[i].onclick = function clicked(MyElement){var target = (MyElement.target) ? MyElement.target : MyElement.srcElement;var e = document.createElement('a'); e.setAttribute('id','myUniqueID'); e.setAttribute('value', this); target.appendChild(e);};} 

該腳本將ID爲「myUniqueID」中的任何元素點擊,則該腳本可以檢索通過執行點擊的文檔的子以下蟒蛇代碼:

resultss=browser.driver.find_element_by_id("myUniqueID") #This uses selenium driver engine. 
resultss.find_element_by_xpath("..") #This gets the parent node of selected one 

JS代碼的目的是挑選任何元素點擊網站上,通過追加本身在HTML代碼中的所有項目:

document.getElementsByTagName('*') 

但是這個腳本失敗了,因爲它無法選取所有的元素。例如,如果您點擊月/性別表格in google signup page,然後選擇一個月,它將選擇代表所選月份的元素,但不會檢測到第一次點擊the form。因此,getElementsByTagName('*')不會選取網站中的所有元素。

Javascript如何附加運行全部文檔中的元素無例外嗎?

+0

第一個鏈接是錯誤的。 –

+0

道歉,現在工作。 –

回答

0

我聘請了一位自由職業者來完成腳本。我非常接近,但是由於即時通訊在JavaScript中是全新的,所以我花了很長時間才弄明白。我需要使用'onmousedown'而不是'onclick'作爲事件。由此產生的腳本如下:

var DocElements = document.getElementsByTagName('*');for(var i = 0; i < DocElements.length; i++){DocElements[i].onmousedown = function clicked(MyElement){var target = (MyElement.target) ? MyElement.target : MyElement.srcElement;var e = document.createElement('a'); e.setAttribute('id','myUniqueID'); e.setAttribute('value', this); target.appendChild(e);};} 

我希望這對未來的其他人有用。