2011-04-04 61 views
1

我想禁用所有網頁到通過的Greasemonkey腳本(FF3.6)自動突出顯示文本輸入表單字段的內容的能力。這是我第一次嘗試:如何從一個greasemonkey腳本重寫DOM方法?

// ==UserScript== 
// @name   Prevent Auto-highlight 
// @namespace  quintopia 
// ==/UserScript== 
HTMLInputElement.prototype.select = function() { 
    //do nothing 
} 

但是,這是行不通的。是因爲它在頁面的其他部分之後加載,因此在創建後不會應用於輸入字段?我是否需要手動循環DOM,查找每個輸入字段,並手動覆蓋它的選擇才能使其正常工作? (我沒有試過,因爲我不想做這種方式,除非它確實是最好的方法。我問,以瞭解在做這樣的事情的「最佳」或「標準」的方式。)

+0

你所說的自動的亮點是什麼意思?你的意思是選擇文本的顏色不同嗎?如果是這樣,是否足以改變外觀,或者你想停止選擇腳本?或者你的意思是拼寫檢查功能?還有別的嗎?不建議覆蓋基本的'select()'函數。 – 2011-04-04 04:24:45

+0

似乎是一樣的我想從選擇停止腳本的問題是「防止在選擇HTML」 http://stackoverflow.com/questions/2326004/prevent-selection-in-html – RobG 2011-04-04 05:20:46

+0

@Brock。 @RobG這看起來是關於防止最終用戶選擇,我不想這樣做。我只想阻止腳本選擇。 – quintopia 2011-04-04 15:02:09

回答

0

認爲你正在試圖做的是停止整個輸入字段什麼,當你點擊它被自動選擇?

使用if()過濾器向整個頁面添加點擊事件(或onFocus?),以測試點擊的目標是否爲輸入字段(以節省必須循環並創建潛在的大量事件處理程序)會做你想要的。接下來的部分可以像你想的那樣簡單或優雅。

的簡單的方法是將有從事件處理程序的onTimeout()觸發(100毫秒延遲)並移動光標到文本字段的末尾。這是一種競爭條件(取決於頁面的代碼運行速度比定時器允許的更快),但這應該適用於大多數站點。

更復雜的會檢測鼠標在觸發點擊事件時的輸入字段中的位置,並相應地放置光標,和/或將改爲成爲站點特定的,並覆蓋/特定地抵消確切頁面/站點上的代碼你想使用它。

相關問題